1、rc.local
直接在/etc/rc.loacl文件中编辑需要开机自启动的脚本或程序,注意启动代码要放在exit之前,并且使用&符号后台执行,否则如果是死循环脚本或者程序的话就会卡住。因为是root权限启动的,所有执行权限比较高,缺点是如果系统是普通用户登录的,就无法自启动图形界面程序。
2、profile
直接在/etc/profile文件中编辑需要开机自启动的脚本或程序,如果系统是普通用户登录的,则执行权限比较低,无法执行一些需要root权限的操作。同时,每次通过ssh远程登录系统时,都会执行一遍/etc/profile。
3. /etc/init.d
执行runlevel指令确定系统运行等级。
/etc/rc4.d $ runlevel
N 5
在/etc/init.d目录下创建sh脚本用来启动或停止程序,具体试例如下
#!/bin/sh### BEGIN INIT INFO
# Provides: ntp
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Start NTP daemon
### END INIT INFOPATH=/sbin:/bin:/usr/sbin:/usr/bin. /lib/lsb/init-functionsDAEMON=/usr/sbin/ntpd
PIDFILE=/var/run/ntpd.pidtest -x $DAEMON || exit 0if [ -r /etc/default/ntp ]; then. /etc/default/ntp
fiif [ -e /run/ntp.conf.dhcp ]; thenNTPD_OPTS="$NTPD_OPTS -c /run/ntp.conf.dhcp"
fiRUNASUSER=ntp
UGID=$(getent passwd $RUNASUSER | cut -f 3,4 -d:) || true
if test "$(uname -s)" = "Linux"; thenNTPD_OPTS="$NTPD_OPTS -u $UGID"
ficase $1 instart)log_daemon_msg "Starting NTP server" "ntpd"if [ -z "$UGID" ]; thenlog_failure_msg "user \"$RUNASUSER\" does not exist"exit 1fistart-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- -p $PIDFILE $NTPD_OPTSlog_end_msg $?;;stop)log_daemon_msg "Stopping NTP server" "ntpd"start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE --retry=TERM/30/KILL/5 --exec $DAEMONlog_end_msg $?rm -f $PIDFILE;;restart|force-reload)$0 stop && sleep 2 && $0 start;;try-restart)if $0 status >/dev/null; then$0 restartelseexit 0fi;;reload)exit 3;;status)status_of_proc $DAEMON "NTP server";;*)echo "Usage: $0 {start|stop|restart|try-restart|force-reload|status}"exit 2;;
esac
然后在/etc/rc5.d目录下创建软连接指向刚才创建的sh脚本
sudo ln -s ../init.d/xxxx.sh S90XXXXX
其中文件名中的S和K分别代表start和stop,数字代表执行顺序。
4. systemclt
编写xxxx.service文件,可以参考链接https://blog.csdn.net/u012206617/article/details/121472600
将其存放在/usr/lib/systemd/system目录下
1) 第一步需要先执行这个命令来重载服务
systemctl daemon-reload
2) 开机启动服务
systemctl enable xxxx
3) 去掉开机启动服务
systemctl disable xxxx
4) 服务相关操作
systemctl start xxxx 启动
systemctl stop xxxx 停止
systemctl restart xxxx 重启
systemctl status xxxx 查看状态