目录
修改那个脚本?
首先关注几个脚本
- /etc/rc.d/rc.local:该脚本在系统启动时被执行一次;
- /etc/profile:该脚本在所有用户登陆时会被执行一次;
- ~/.bashrc:该脚本在用户登陆时被执行一次,与/etc/profile不同的是,bashrc文件每个用户拥有独立的一个。
若设置开机启动,应该I修改:/etc/rc.d/rc.local文件。
添加什么内容?
首先,为了防止阻塞其他后续程序的执行,应该使用后台执行"&"。但仅仅通过后台执行是不可行的,被执行的程序有可能存在父进程退出的情况,这时,就需要使用systemd系统的守护进程(进程号为1)来启动该程序。
(xxx &)
当执行一个脚本,并希望使用1号进程启动它(终端关闭后,该程序不会被退出),可使用“(xxx &)”来启动进程,如:
当我们ping个主机时,命令如下:
ping 127.0.0.1 & #后台执行
此时,该命令执行的父进程为该terminal的bash,当采用:
(ping 127.0.0.1 &)执行时,他的父进程就变成了1号进程,当我们关闭执行该命令的终端terminal时,该命令也不会被终止。
nohup
如nohup your_command &
这样命令在你退出后仍然会在后台执行
setsid
该命令的结果是使你所运行的命令的父进程为init,所以只有关机该进程才会停止。
setsid your_command
此外可能还需要一些其他的工具辅助,比如当开机启动的程序依赖于系统的其他执行程序,那么我们就需要在启动过程中使用延时启动,比如:
at now+1 minutes < /your/path/yourexec &
延时1分钟启动。