A Linux service is an application (or set of applications) that runs in the background waiting to be used, or carrying out essential tasks.linux
也就是說,Linux服務是在後臺運行的應用程序(或一組應用程序),正在等待執行或正在執行基本任務。 在Linux或者Unix系統中,服務也被稱爲Daemons(守護進程)。它們運行在後臺,爲一些程序提供服務。好比咱們熟知的sshd
服務(其中d指的就是daemon),它就是ssh
命令的相應守護進程。shell
service
命令一般用於控制服務的一些狀態,其使用方法以下網絡
Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]
其中它會去/etc/init.d/
目錄中尋找service_name,一些基本例子以下(爲方便演示,以sshd
爲例,而且以root身份運行,所以省略了可能的sudo
):app
[+]
表示正在運行的,[-]
表示當前沒有運行,[?]
表示因某種緣由不能肯定其運行狀態:service --status-all
service sshd status
service sshd start service sshd stop service sshd restart service sshd reload
systemctl
是一個新的用來控制systemd和service的工具,用來取代舊的SysV init 系統管理。 主要語法:ssh
systemctl [OPTION] [SERVICE]
下面給出些基本操做,注意事項同上tcp
systemctl status sshd
或者systemctl is-active sshd
來查看服務是否運行工具
systemctl start sshd systemctl stop sshd systemctl restart sshd systemctl reload sshd
systemctl list-unit-files
或者spa
systemctl list-units --type service
其中Enabled代表服務正在運行;Disabled代表服務當前沒有運行;Masked表示服務不會被運行,除非咱們手動移除這個標誌;Static表示服務只有在別的服務或單元須要它時才被使用。rest
systemctl enable sshd
或者code
systemctl disable sshd
來取消開機自啓
總的來講,後者(systemctl
)的功能比前者要強大得多,前者的功能後者彷佛都包括,並且後者還含有很多前者所沒有的功能。 另外我還看到有些linux發行版本會將service命令重定向爲systemctl命令,以下圖所示:
首先建立服務的執行的代碼,也就是將某個程序的運行代碼轉爲服務。 這裏以個人一個程序爲例,/root/flynet -M socks-tcp -L 8888
,運行以後會監聽8888端口。具體這個程序的用途在這裏並不重要,咱們只用知道運行以後它會監聽相應端口便可。
而後在/etc/systemd/system
目錄下新建一個文件,我這裏以flynet.service
爲例,內容爲:
[Unit] Description=Flynet service After=network.target [Service] ExecStart=/root/flynet -M socks-tcp -L 8888 Restart=always [Install] WantedBy=multi-user.target
其中Description爲該服務的描述;After爲服務的啓動順序,表示在某種條件達到後才執行,這裏表示的在網絡就緒以後運行;ExecStart即爲你要執行的目標代碼;Restart表示當該服務因某種緣由退出以後,自動啓動的配置;WantedBy表示安裝的對象,這裏表示多用戶。
服務建立好以後,而後能夠經過下面的命令來啓動服務
systemctl start flynet
還能夠經過下面的命令來實現開機自啓
systemctl enable flynet
如今開機自啓的實現方式中,比較經常使用的有兩種,其一就是上文中的建立服務,另外一種就是cron
cron主要用於定時任務,不過也能夠實現開機自啓。 下面也簡單介紹下cron的,首先輸入
crontab -e
而後選擇你喜歡的輸入法,以後再輸入
@reboot /home/user/test.sh
這裏表示的是開機會自動運行後面的腳本文件,固然後面內容的內容是自定義的,也能夠是單個命令,而不侷限於腳本文件。以後再保存便可。
這樣就使用cron實現了開機自啓,更多cron能夠參考我這篇博客