在工作用可以我們需要某些腳本需要在系統(tǒng)啟動(dòng)時(shí)自動(dòng)執(zhí)行一些腳本或者啟動(dòng)一些服務(wù),在Windows下我們有很多方式來處理,但是在linux下如何執(zhí)行呢?
在工作用可以我們需要某些腳本需要在系統(tǒng)啟動(dòng)時(shí)自動(dòng)執(zhí)行一些腳本或者啟動(dòng)一些服務(wù),在Windows下我們有很多方式來處理,但是在linux下如何執(zhí)行呢?

今天分享一下3種常用的開機(jī)啟動(dòng)運(yùn)行的方法供參考
1、修改 /etc/rc.d/rc.local 文件方式
/etc/rc.d/rc.local 用于用戶自定義開機(jī)啟動(dòng)程序,因此可以往里寫開機(jī)要執(zhí)行的命令或腳本。
1、設(shè)置 rc.local 的可執(zhí)行權(quán)限
# chmod +x /etc/rc.d/rc.local
2、創(chuàng)建待執(zhí)行的腳本,如下:
# cat /home/test.sh
#!/bin/bash
echo "hello world" >> /home/out.txt
date >> /home/out.txt
3、設(shè)置腳本的可執(zhí)行權(quán)限
# chmod +x /home/test.sh
4、把腳本放到 /etc/rc.d/rc.local 尾部
# cat /etc/rc.d/rc.local
...
/home/test.sh
5、重啟系統(tǒng)使之生效
# reboot
6、查看日志文件判斷腳本是否執(zhí)行
# cat /home/out.txt
hello world
Thu Dec 30 20:45:00 CST 2021
有關(guān) /etc/rc.d/rc.local 執(zhí)行時(shí)機(jī)如下:

2、使用 crontab 方式
crond 是 linux 下用來周期性的執(zhí)行某種任務(wù)或等待處理某些事件的一個(gè)守護(hù)進(jìn)程,與 windows 下的計(jì)劃任務(wù)類似,當(dāng)安裝完成操作系統(tǒng)后,默認(rèn)會(huì)安裝此服務(wù) 工具,并且會(huì)自動(dòng)啟動(dòng) crond 進(jìn)程,crond 進(jìn)程每分鐘會(huì)定期檢查是否有要執(zhí)行的任務(wù),如果有要執(zhí)行的任務(wù),則自動(dòng)執(zhí)行該任務(wù)。
因此我們可以使用 crondtab 命令創(chuàng)建一個(gè)任務(wù),讓該任務(wù)在重啟時(shí)進(jìn)行執(zhí)行。
# crontab -e
//進(jìn)入編輯,輸入如下行
@reboot /home/test.sh
//重啟設(shè)備
# reboot
//查看日志
# cat /home/out.txt
hello world
Thu Dec 30 21:09:03 CST 2021
3、使用 systemd 服務(wù)
Systemd 服務(wù)是一種以 .service 結(jié)尾的單元(unit)配置文件,用于控制由 Systemd 控制或監(jiān)視的進(jìn)程。簡單說,用于后臺以守護(hù)進(jìn)程(daemon)的形式運(yùn)行程序。
systmd service 文件一般放在/etc/systemd/system/文件夾中。
創(chuàng)建一個(gè)服務(wù)如下
//在/etc/systemd/system/下創(chuàng)建一個(gè)服務(wù),如下
# vim ser.service
//[Unit] 區(qū)塊:啟動(dòng)順序與依賴關(guān)系。
[Unit]
//Description字段給出當(dāng)前服務(wù)的簡單描述
Description=Run a Custom Script at Startup
After=default.target
//Service區(qū)塊定義如何啟動(dòng)當(dāng)前服務(wù)
[Service]
//ExecStart字段:定義啟動(dòng)進(jìn)程時(shí)執(zhí)行的命令
ExecStart=/home/test.sh
//Install區(qū)塊,定義如何安裝這個(gè)配置文件,即怎樣做到開機(jī)啟動(dòng)
[Install]
//WantedBy字段:表示該服務(wù)所在的 Target,Target的含義是服務(wù)組,表示一組服務(wù)
WantedBy=default.target
//更新服務(wù)配置文件,并使能服務(wù)
# systemctl daemon-reload
# systemctl enable ser.service
//重啟系統(tǒng)
# reboot
有關(guān) systemd 服務(wù)還有很多實(shí)用方式,本文知識做到拋磚引玉的作用,有興趣的話可以自行研究這方面的知識。