linux系统服务命令systemctl使用说明
服務:常駐系統內存中的進程且可以提供一些系統和網絡功能;現在最新的Linux系統都統一使用systemctl進行服務的管理
1.運行級別的分類 runlevel
>?運行級別0:系統停機狀態 >?運行級別1:單用戶工作狀態,root權限,用于系統維護,禁止遠程登陸? >?運行級別2:多用戶狀態(沒有NFS)? >?運行級別3:完全的多用戶狀態(有NFS) >?運行級別4:系統未使用,保留? >?運行級別5:X11控制臺 >?運行級別6:系統正常關閉并重啟2.管理服務 systemctl (root權限)
>?systemctl?[opt]?xxx.service >?status??查看當前服務狀態 >?start??啟動服務 >?stop??關閉服務 >?restart?重啟服務 >?enable?設置開機啟動 >?disable?設置開機不啟動 >?reload??后面不接具體服務名,重新加載配置文件 >?mask?注銷服務 >?unmask?取消注銷3.一些常用命令 systemctl
-
查看當前已經啟動的服務 systemctl list-units
-
查看所有服務 systemctl list-unit-files
-
查看服務有哪些依賴 systemctl list-dependencies xx.service
-
查看服務有哪些依賴(反向) systemctl list-dependencies --reverse xx.service
4.system 服務相關的一些目錄( Centos 環境,Debian 類的環境可能會有稍許不同)
/usr/lib/systemd/system/?系統安裝的軟件默認啟動腳本目錄? /etc/systemd/system/?用戶根據自己需要建立的啟動腳本目錄 /etc/sysconfig/?服務初始化選項目錄 /var/lib/?服務運行時產生的數據存儲目錄 /etc/xxx/?各服務配置目錄5.結合一個例子來具體講解,一臺機開啟兩個ssh服務
我們最常使用的ssh服務,系統默認ssh服務22端口,我現在想再開一個ssh服務,端口8888
1.系統服務啟動腳本 /usr/lib/systemd/system/sshd.service,將其復制到 /etc/systemd/system/ 下,并改名為 sshd2.service,文件內容如下
[Unit]Description=OpenSSH?server?daemonDocumentation=man:sshd(8)?man:sshd_config(5)After=network.target?sshd-keygen.serviceWants=sshd-keygen.service[Service]Type=notifyEnvironmentFile=/etc/sysconfig/sshdExecStart=/usr/sbin/sshd?-D?$OPTIONSExecReload=/bin/kill?-HUP?$MAINPIDKillMode=processRestart=on-failureRestartSec=42s[Install]WantedBy=multi-user.target因為要重啟一個新的服務,所以要修改一下ExecStart這一行,讀取新的配置文件 sshd2_config,改為
??ExecStart=/usr/sbin/sshd?-D?$OPTIONS?-f?/etc/ssh/sshd2_config2.到 /etc/ssh/ 下,將 sshd_config 復制到 sshd2_config,并修改端口那一行
?Port?88883.運行命令 systemctl reload 重新加載一下配置
4.運行命令 systemctl status sshd2.service 查看狀態
5 運行命令 systemctl start sshd2.service 開啟服務
6.運行命令 systemctl enable sshd2.service 設置開機啟動
7.在另一臺機器上登錄 ssh fancy@ip -p8888 就可以登錄了
-
注意1,防火墻要打開8888端口
-
注意2,官方建議用戶自己新建的服務腳本最好存放在 /etc/systemd/system/ 目錄下,實際情況下存放在系統服務目錄 /usr/lib/systemd/system/ 下也是沒有問題的,看個人選擇了
6.我們再來舉個例子,做一個自己的服務
1.在 /root/bin/ 下創建一個shell腳本 fancy_test.sh,并修改其權限,chmod u+x fancy_test.sh,內容如下
#!/bin/bash logdate=$(date?+%s) logdir="/root/log/" logname=fancy.${logdate}.log #echo?$logname touch?${logdir}${logname}意思是,運行該服務時,在 /root/log/ 目錄下創建一個日志文件
2.在 /etc/systemd/system/ 下創建啟動腳本 fancy_test.service,輸入一下內容
[Unit] Description=fancy_test?server?daemon[Service] Type=simple ExecStart=/root/bin/fancy_test.sh[Install] WantedBy=multi-user.target3.運行命令 systemctl reload
4.運行命令 systemctl start fancy_test.service
5.此時你會看到在 /root/log/ 目錄下創建了一個日志文件
-
注意,我們這個是最簡單的服務,執行幾個命令而已,所以沒有配置文件,也不會常駐內存,運行一次就結束
總結
以上是生活随笔為你收集整理的linux系统服务命令systemctl使用说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配置Linux的时钟同步
- 下一篇: Linux系统高并发kernel参数优化