在工作用可以我們需要某些腳本需要在系統啟動時自動執行一些腳本或者啟動一些服務,在windows下我們有很多方式來處理,但是在linux下如何執行呢?
今天分享一下3種常用的開機啟動運行的方法供參考
1、修改 /etc/rc.d/rc.local 文件方式
/etc/rc.d/rc.local 用于用戶自定義開機啟動程序,因此可以往里寫開機要執行的命令或腳本。
1、設置 rc.local 的可執行權限
# chmod +x /etc/rc.d/rc.local
2、創建待執行的腳本,如下:
# cat /home/test.sh
#!/bin/bash
echo "hello world" >> /home/out.txt
date >> /home/out.txt
3、設置腳本的可執行權限
# chmod +x /home/test.sh
4、把腳本放到 /etc/rc.d/rc.local 尾部
# cat /etc/rc.d/rc.local
...
/home/test.sh
5、重啟系統使之生效
# reboot
6、查看日志文件判斷腳本是否執行
# cat /home/out.txt
hello world
Thu Dec 30 20:45:00 CST 2021
有關 /etc/rc.d/rc.local 執行時機如下:
2、使用 crontab 方式
crond 是 linux 下用來周期性的執行某種任務或等待處理某些事件的一個守護進程,與 windows 下的計劃任務類似,當安裝完成操作系統后,默認會安裝此服務 工具,并且會自動啟動 crond 進程,crond 進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
因此我們可以使用 crondtab 命令創建一個任務,讓該任務在重啟時進行執行。
# crontab -e
//進入編輯,輸入如下行
@reboot /home/test.sh
//重啟設備
# reboot
//查看日志
# cat /home/out.txt
hello world
Thu Dec 30 21:09:03 CST 2021
3、使用 systemd 服務
Systemd 服務是一種以 .service 結尾的單元(unit)配置文件,用于控制由 Systemd 控制或監視的進程。簡單說,用于后臺以守護進程(daemon)的形式運行程序。
systmd service 文件一般放在/etc/systemd/system/文件夾中。
創建一個服務如下
//在/etc/systemd/system/下創建一個服務,如下
# vim ser.service
//[Unit] 區塊:啟動順序與依賴關系。
[Unit]
//Description字段給出當前服務的簡單描述
Description=Run a Custom Script at Startup
After=default.target
//Service區塊定義如何啟動當前服務
[Service]
//ExecStart字段:定義啟動進程時執行的命令
ExecStart=/home/test.sh
//Install區塊,定義如何安裝這個配置文件,即怎樣做到開機啟動
[Install]
//WantedBy字段:表示該服務所在的 Target,Target的含義是服務組,表示一組服務
WantedBy=default.target
//更新服務配置文件,并使能服務
# systemctl daemon-reload
# systemctl enable ser.service
//重啟系統
# reboot
有關 systemd 服務還有很多實用方式,本文知識做到拋磚引玉的作用,有興趣的話可以自行研究這方面的知識。