Centos7自啓動
幾種方式
一、服務的方式自啓動
- /etc/init.d下相關程序的啓動腳本
- ln -s /etc/init.d/服務名
- /etc/rc.d/rc3.d/S100服務名
- //S:開機自啓動 100:啓動順序
二、systemctl
- 系統services服務配置目錄: /etc/systemd/system
- 一般只放系統核心基礎服務配置
- 自定義配置目錄: /usr/lib/systemd/system/
- 存放自定義應用註冊類服務和第三方服務類配置
1. 配置文件(XXXX.service 權限:754)
[Unit] # 啓動順序與依賴關係
Description="run test service" # 服務描述
Requires= # 強依賴關係,該服務失敗或停止,test也必須退出
Wants=redis.service # test和Redis存在”弱依賴“關係,Redis啓動失敗或停止運行,不影響test
Before=
After=redis.service # 在redis.service之後啓動
[Service] # 啓動行爲
Type=forking # 優先使用forking方式: (遵循傳統Unix做法,設置PIDFile=選項,
# 幫助systemd準確定位該服務的主進程)
# simple(默認值):ExecStart字段啓動的進程爲主進程
# forking:ExecStart字段將以fork()方式啓動,此時父進程將會退出,子進程將成爲主進程
# oneshot:類似於simple,但只執行一次,Systemd 會等它執行完,才啓動其他服務
# dbus:類似於simple,但會等待 D-Bus 信號後啓動
# notify:類似於simple,啓動結束後會發出通知信號,然後 Systemd 再啓動其他服務
# idle:類似於simple,但是要等到其他任務都執行完,纔會啓動該服務。一種使用場合是爲讓該服務的輸出,不與其他服務的輸出相混合
PIDFile=/var/run/app-run.pid # 設置應用進程的PID(缺省)
User=csapal
Group=csapal
TimeoutSec=30s
RestartSec=10s
Restart=always # no(默認值):退出後不會重啓
# on-success:只有正常退出時(退出狀態碼爲0),纔會重啓
# on-failure:非正常退出時(退出狀態碼非0),包括被信號終止和超時,纔會重啓
# on-abnormal:只有被信號終止和超時,纔會重啓
# on-abort:只有在收到沒有捕捉到的信號終止時,纔會重啓
# on-watchdog:超時退出,纔會重啓
# always:不管是什麼退出原因,總是重啓
Environment="/etc/csapal/systemd_env" # 環境變量設置,可設置多個Environment=項
# 備註:Environment或 EnvironmentFile引用文件皆可
ExecStart=/data/auto_run.sh start # 定義啓動進程時執行的命令或文件
ExecReload= # 重啓服務時執行的命令或文件
ExecStop= # 停止服務時執行的命令或文件
DefaultTimeoutStartSec=30 # 服務啓動允許的最大時長,超時時間(默認無單位:秒)
# 單位:"ms"(毫秒), "s"(秒), "min"(分鐘),
# "h"(小時), "d"(天), "w"(周)
Slice=csapal.slice
PrivateTmp=True # 是否分配獨立的臨時空間(缺省)
[Install]
WantedBy=multi-user.target
2. 基本操作
- 啓動:systemctl start redis.service
- 停止:systemctl stop redis.service
- 停止不下來時,可以殺,systemctl kill redis.service
- 重啓:systemctl restart redis.service
- 查看狀態: systemctl status redis.service
- 設置服務開機自啓動:systemctl enable redis.service
- 禁用服務:systemctl disable redis.service
- 屏蔽服務:ln -s ‘/dev/null’ ‘/etc/systemd/system/httpd.service’
- 取消屏蔽服務: rm ‘/etc/systemd/system/httpd.service’
- 列出所有運行單位:systemctl list-units
- 列出所有可用單位: sysytemctl list-units-files
- 列出所有失敗單元: systemctl --failed
- 檢查是否可用:systemctl is-enabled redis.service
- 查詢日誌: journalctl -ex redis.service
三、定時啓動腳本
crontab