shell脚本后台执行 开启自启

要在后台执行Shell脚本并设置它开机自启,你需要执行两个步骤:

后台执行Shell脚本

要将Shell脚本在后台执行,你可以使用nohup命令来忽略挂起(SIGHUP)信号,这样即使你关闭了终端,脚本也会继续运行。同时,使用&将命令放到后台执行。

 
  
nohup /path/to/your/script.sh &

这将会启动脚本,并且即使你关闭了终端,脚本也会继续运行。nohup命令会将输出重定向到一个名为nohup.out的文件中,除非你指定了其他的输出文件。

设置脚本开机自启

要设置脚本开机自启,你可以使用systemdcron@reboot选项或者/etc/rc.local(对于某些系统)。下面我将介绍使用systemd的方法,因为它更加现代和灵活。

首先,你需要创建一个systemd服务单元文件来描述你的脚本。创建一个新的服务单元文件,例如/etc/systemd/system/your-script.service,并添加以下内容:

 
  
[Unit]
Description=My custom startup script
After=network.target

[Service]
Type=simple
ExecStart=/path/to/your/script.sh
Restart=on-failure
User=your-username
Group=your-groupname

[Install]
WantedBy=multi-user.target

确保替换DescriptionExecStartUserGroup为你自己的脚本描述、脚本路径、运行脚本的用户名和组名。

然后,重新加载systemd守护进程并启用你的服务:

 
  
sudo systemctl daemon-reload
sudo systemctl enable your-script.service

现在,你的脚本将会在系统启动时自动运行。如果你想要立即启动服务而不是等待下次重启,可以运行:

 
  
sudo systemctl start your-script.service

如果你不想使用systemd,你也可以使用cron@reboot选项。只需编辑crontab文件(使用crontab -e命令),然后添加以下行:

 
  
@reboot /path/to/your/script.sh

这将会在每次系统启动时运行你的脚本。但请注意,使用cron@reboot选项时,脚本会在系统完成所有启动服务后执行,这可能会比使用systemd的服务稍晚一些。

所以我们不建议用这种方案

使用/etc/rc.local也是一种方法,但这种方法在一些现代的Linux发行版中已经不常用了,因为它不支持依赖管理和服务重启。如果你的系统上有/etc/rc.local,你可以在文件末尾添加你的脚本路径,并确保文件具有执行权限。

请根据你的具体需求和系统环境选择最适合你的方法。

你可能感兴趣的:(linux,运维,服务器)