我正在学习 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 &
换句话说,附加&
到命令中。
您说过您想“不显示终端”运行此脚本。我认为有两种方法可以做到这一点:
创建一个
systemd
服务 - 如这个答案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
)。
需要记住的一些事情:
确保
myscript.sh
是可执行文件。如果您在 中使用任何命令
myscript.sh
,请确保系统知道在哪里可以找到它们 - 即使用完整路径命令,或者在脚本中声明一个 PATH。
如果您还有其他问题,请告诉我们(发表评论),我们将尽力提供帮助。