1、方法一:通過腳本設置
1)
chmod +x /etc/rc.d/rc.local
2) 在 /etc/rc.d/rc.local 中 添加需要自啟的軟件的啟動命令,如:
/usr/local/tomcat8/bin/startup.sh // 執行 tomcat 啟動命令
2、方法二:通過配置系統服務來設置自啟動 systemctl
在CentOS 7中, 一些軟件程序會在安裝時自動創建服務, 比如Apache, PHP, MySQL, Nginx等等,
對於已經創建好的服務, 我們唯一要做的就是把服務設置成自啟動就可以了,如:
systemctl enable mysqld // mysql服務自啟
systemctl status mysqld // 查看服務狀態
systemctl disable mysqld // 取消自啟
自己創建服務.
CentOS7的服務systemctl腳本存放在:/usr/lib/systemd/,有系統(system)和用戶(user)之分,需要開機不登陸就能運行的程序,存在系統服務里,即:/usr/lib/systemd/system目錄下.
CentOS7的每一個服務以.service結尾,一般會分為3部分:[Unit]、[Service]和[Install]
[Unit]部分主要是對這個服務的說明,內容包括Description和After,Description 用於描述服務,After用於描述服務類
[Service]部分是服務的關鍵,是服務的一些具體運行參數的設置.
Type=forking是后台運行的形式,
User=users是設置服務運行的用戶,
Group=users是設置服務運行的用戶組,
PIDFile為存放PID的文件路徑,
ExecStart為服務的具體運行命令,
ExecReload為重啟命令,
ExecStop為停止命令,
PrivateTmp=True表示給服務分配獨立的臨時空間
注意:[Service]部分的啟動、重啟、停止命令全部要求使用絕對路徑,使用相對路徑則會報錯!
[Install]部分是服務安裝的相關設置,可設置為多用戶的
例如我們創建一個名為nginx.service的服務
#vim /usr/lib/systemd/system/nginx.service
[UNIT]
#服務描述
Description=Media wanager Service
#指定了在systemd在執行完那些target之后再啟動該服務
After=network.target
[Service]
#定義Service的運行類型,一般是forking(后台運行)
Type=forking
#定義systemctl start|stop|reload *.service 的執行方法(具體命令需要寫絕對路徑)
#注:ExecStartPre為啟動前執行的命令
ExecStart=/opt/nginx/sbin/nginx
ExecReload=/opt/nginx/sbin/nginx -s reload
ExecStop=/opt/nginx/sbin/nginx -s stop
#創建私有的內存臨時空間
PrivateTmp=True
[Install]
#多用戶
WantedBy=multi-user.target
再 添加 可執行 權限
chmod 754 /usr/lib/systemd/system/nginx.service
常用命令:
systemctl list-units --type=service // 查看服務列表狀態
systemctl list-unit-files // 列出所有已經安裝的 服務 及 狀態 (可為人所讀, 內容簡略、清晰)
systemctl // 可以列出正在運行的服務狀態,如圖:(基本不為人所讀, 內容復雜、全面)
systemd-cgls // 以樹形列出正在運行的進程,它可以遞歸顯示控制組內容
systemctl start xxx.service // 啟動一個服務
systemctl stop xxx.service // 關閉一個服務
systemctl restart xxx.service // 重啟一個服務
systemctl status xxx.service // 查看服務狀態
systemctl is-enabled xxx.service // 查看服務是否開機啟動
systemctl list-unit-files | grep enabled // 查看已啟動的服務列表
systemctl --failed // 查看啟動失敗的服務列表
