此題也可以稱為:
讓1個腳本或命令通過service 管理或chkconfig或systemctl 管理
方法1 CentOS6和CentOS7
/etc/rc.local
注意:
CentOS 7中使用rc.local之前 需要加上執(zhí)行權(quán)限
chmod +x /etc/rc.d/rc.local
方法2 CentOS 6中
可以通過chkconfig(check config)管理開機自啟動
1.書寫1個腳本放在/etc/init.d/目錄下
[root@oldboyedu-54-final ~]# cat /etc/init.d/oldboyd
#!/bin/bash
hostname
2.腳本要有執(zhí)行權(quán)限
[root@oldboyedu-54-final ~]# chmod +x /etc/init.d/oldboyd
3.腳本的開頭要有chkconfig要求的格式
[root@oldboyedu-54-final ~]# cat /etc/init.d/oldboyd
#!/bin/bash
# chkconfig: 2345 99 99
hostname
# chkconfig: | 2345 | 99 | 99 |
---|---|---|---|
默認格式 | 默認開機自啟動級別 | 開機順序 | 關(guān)機順序 |
4.把腳本加入到chkconfig管理
[root@oldboyedu-54-final ~]# chkconfig --add oldboyd
[root@oldboyedu-54-final ~]# chkconfig |grep oldboy
oldboyd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
方法3 CentOS 7中 systemctl 控制開機自啟動
systemctl start/restart/enable/disable rsync 通過配置文件實現(xiàn)
1.放在 /usr/lib/systemd/system/rsyncd.service 目錄下
systemctl配置文件的格式
創(chuàng)建centos7 可以被systemctl管理配置文件的格式
[unit] 部分
#寫注釋說明
After與Before 依賴
After在xxxx服務(wù)之后運行
Before 在xxxx服務(wù)之前運行
ConditionPathExists 如果文件或目錄存在
[Service]
寫服務(wù)開啟或關(guān)閉命令
ExecStartPre啟動服務(wù)之前運行
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx #啟動nginx的命令
ExecReload=/bin/kill -s HUP $MAINPID #重啟 重新讀取配置文件
KillSignal=SIGQUIT
man kill 查詢更多信號
[Install]
WantedBy=multi-user.target #指定運行級別
例子nginx啟動
[root@oldboyedu-54-final ~]# cat /usr/lib/systemd/system/rsyncd.service
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf
[Service]
EnvironmentFile=/etc/sysconfig/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS"
[Install]
WantedBy=multi-user.target
例子rsyncd啟動
[root@oldboyedu-54-final ~]# cat /usr/lib/systemd/system/nginx.service
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
[Install]
WantedBy=multi-user.target
參考文檔:
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7