如何在 Ubuntu 在 tty 上启动时运行 bash 脚本

xpr*_*oot 1 boot bash tty

我的 grub 没有“安静的启动”,因此它在启动时显示文本,我想在它显示“欢迎使用 Ubuntu 20.04 LTS”之前运行“neofetch -L”

Raf*_*ffa 6

您可以按照以下步骤添加自定义服务以在启动时运行脚本。

首先,在终端中运行以下命令,在主目录中创建并编辑 shell 脚本文件:

nano ~/MyScript.sh
Run Code Online (Sandbox Code Playgroud)

其次,将以下代码复制并粘贴到编辑器中neofetch -L只是一个示例) ,然后按Ctrl+X然后按Y然后按 保存Enter

#!/bin/bash

neofetch -L
Run Code Online (Sandbox Code Playgroud)

第三,通过在终端中运行以下命令使 shell 脚本文件可执行:

chmod +x ~/MyScript.sh
Run Code Online (Sandbox Code Playgroud)

第四,创建并编辑自定义systemd服务,通过在终端中运行以下命令来在启动时运行 shell 脚本:

sudo nano /etc/systemd/system/MyCustomService.service 
Run Code Online (Sandbox Code Playgroud)

第五,将以下代码复制并粘贴到编辑器中,替换USERNAME您的用户名Ctrl,然后按+保存X,然后按Y然后按Enter

[Unit]
Description=My Custom Service
Before=motd-news.service

[Service]
Type=oneshot
ExecStart=/home/USERNAME/MyScript.sh
StandardOutput=journal+console

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

第六,在终端中运行以下命令启动服务:

sudo systemctl start MyCustomService
Run Code Online (Sandbox Code Playgroud)

第七,通过在终端中运行以下命令来启用该服务:

sudo systemctl enable MyCustomService
Run Code Online (Sandbox Code Playgroud)

最后,重新启动系统。


如果出于任何原因您想要撤消此解决方案,请按照以下相同顺序在终端中依次运行以下命令:

  1. sudo systemctl stop MyCustomService
  2. sudo systemctl disable MyCustomService
  3. sudo rm /etc/systemd/system/MyCustomService.service
  4. rm ~/MyScript.sh

注意:

  • neofetch必须在您的系统上安装才能使上述示例脚本正常工作。可以像这样安装:

    sudo apt install neofetch
    
    Run Code Online (Sandbox Code Playgroud)
  • StandardOutput=journal+console将启用屏幕上脚本的打印输出。

  • 您可以通过在系统服务下的服务文件中指定来更改自定义服务在引导期间开始执行的时间[Unit],以便您的自定义服务将在某些系统服务之后和/或之前运行。请参考这个答案,按照运行顺序列出系统服务。Before=After=

当心:

首先测试您的脚本并确保它及时正确地执行,以避免启动过程中的延迟或锁定。