有时候我们编写了一个shell脚本或是编写了一个可执行程序并希望它能在开启时就运行。我们可以有多种办法实现这一功能。
一、使用/etc/rc.local文件
编辑/etc/rc.local文件,并在其末尾exit 0之前加入你要执行的程序脚本或命令:
sudo vim /etc/rc.local
#!/bin/sh -e
# rc.local
# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
printf "My IP address is %s\n" "$_IP"
fi
# 自定义启动程序
/data/shell/startup.sh
exit 0
保存并退出即可。
需要注意的是,如果你新加入的程序是一个不会自动结束或退出的程序,比如带有无限循环逻辑时,需要在你的程序后加入一个&符号,表示此采用非阻塞方式运行程序,并使其在另外一个新线程中运行。例如:
# 自定义启动程序
/data/shell/startup.sh &
二、采用服务形式
我们可以编写一个服务脚本程序将其命名为myservice并将其保存在/etc/init.d/目录下:
#!/bin/sh
### BEGIN INIT INFO
# Provides: myservice
# Required-Start: $remote_fs
# Required-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start or stop my service.
### END INIT INFO
case $1 in
start)
/data/shell/myservice.sh
;;
stop)
killall myservice
;;
*)
echo "Usage: $0 (start|stop)"
;;
esac
这样我们就创建了一个叫myservice的服务脚本,还需为其加入可执行权限:
sudo chmod +x /etc/init.d/myservice
之后我们就可以通过执行命令来让这个服务启动或停止:
sudo service myservice start
sudo service myservice stop
最后,为了能让我们的服务随开机而启动,我们需要执行下面命令:
sudo update-rc.d myservice defaults
如果需要取消服务开机启动仅需执行:
sudo update-rc.d -f myservice remove
Copyright © 2015-2023 问渠网 辽ICP备15013245号