如何在后台运行 bash 脚本?

如何在后台运行 bash 脚本?

我正在学习 bash 脚本,我刚刚做了一个简短的项目,当我的电池电量低或已充电时通知我(使用通知发送)。

我想要一些关于如何在不显示终端的情况下运行此脚本的建议。我的想法是将其添加到“启动应用程序”软件中以在启动系统时运行,但我不想显示终端,只是在后台运行。

答案1

您可以设置一个 systemd 服务。

您可以使用您最喜欢的编辑器(nano、vim 等)创建一个文件(如 sudo),例如:

sudo nano /etc/systemd/system/myexecuteable.service

它至少应包含以下内容:

[Unit]
Description=start my executable after multi-user target

[Service]
Type=simple
ExecStart=/path/to/my/executable

[Install]
WantedBy=multi-user.target

要确保服务在重新启动后启动,请执行: sudo systemctl enable myexecutable.service

如果 bash 有某种循环,该服务将持续运行。如果该可执行文件有一些输出(在 bash 文件中使用“logger”),您可以随时使用journalctl -u myexecutable.service

答案2

脚本可以从命令行在后台运行,如下所示:

$ ./myscript.sh &

换句话说,附加&到命令中。

您说过您想“不显示终端”运行此脚本。我认为有两种方法可以做到这一点:

  1. 创建一个systemd服务 - 如这个答案

  2. cron系统启动时将脚本作为作业启动:

要设置cron作业,您需要创建一个新crontab条目。

为此,请打开终端,然后键入以下命令:

$ crontab -e

这将crontab在编辑器中打开您的文件(nano对于编辑器来说是一个不错的选择)。当您在编辑器中时,将以下行添加到文件底部:

@reboot /home/user/myscript.sh & >> /home/user/myscript.log 2>&1 

哪儿/home/user/myscript.sh完整路径到你的脚本文件。脚本的任何输出都将是重定向到位于 的文件/home/user/myscript.log。请务必检查此日志文件中是否有任何错误消息。

^ o如果使用 则保存文件 ( ) nano,然后退出编辑器 ( ^ x)。

需要记住的一些事情:

  1. 确保myscript.sh可执行文件

  2. 如果您在 中使用任何命令myscript.sh,请确保系统知道在哪里可以找到它们 - 即使用完整路径命令,或者在脚本中声明一个 PATH。

如果您还有其他问题,请告诉我们(发表评论),我们将尽力提供帮助。

相关内容