一、使用init.d進行設置
init.d是一個早期的啟動腳本系統,是Linux操作系統所有版本中最常見的啟動系統。init.d位於/usr/sbin/下面,並且以開頭的字符是S或K,S開頭的腳本表示服務啟動時要執行的腳本,而K開頭的腳本表示關閉服務時要執行的腳本。
下面是設置開機啟動服務並將其加入到init.d的步驟:
1. 編寫啟動腳本,以nginx為例:
#!/bin/bash
nginx
exit 0
2. 將腳本拷貝到/etc/init.d/目錄下並修改權限:
cp /root/nginx /etc/init.d/
chmod +x /etc/init.d/nginx
3. 將腳本加入到開機啟動項中:
chkconfig nginx on
4. 啟動nginx服務:
service nginx start
注意:使用service命令只是為了測試是否設置成功,實際上開機時服務會自動啟動。
二、使用systemd進行設置
systemd是一個更加現代化的啟動系統,已經成為了所有最新操作系統版本中的默認啟動系統。最大的優點是啟動速度快以及支持並行啟動多個服務。
下面是使用systemd設置自啟動的步驟:
1. 編寫啟動腳本,以roscore為例:
#!/bin/bash
source /opt/ros/melodic/setup.bash
roscore
exit 0
2. 創建該腳本的systemd服務文件:
vim /lib/systemd/system/roscore.service
3. 將以下內容粘貼到文件中:
[Unit]
Description=ROS kinetic Core Service
After=network.target
[Service]
ExecStart=/root/roscore.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
4. 重載systemd的配置文件並重新載入roscore服務:
systemctl daemon-reload
systemctl enable roscore.service
5. 啟動roscore服務:
systemctl start roscore.service
注意:步驟3中的[Unit]和[Service]兩個區域都是必要的,[Unit]中的After=network.target表示服務需要在網絡就緒之後才啟動,[Service]中的ExecStart表示需要執行的命令或腳本。
三、自定義腳本
除了使用系統提供的init.d和systemd啟動系統之外,你也可以自定義腳本來啟動自己的服務。
下面是一個自定義腳本並設置其開機啟動的步驟:
1. 編寫一個需要自啟動的腳本,以foo-bar為例:
#!/bin/bash
cd /root/foo/bar/
node app.js
exit 0
2. 編寫一個啟動腳本,起名叫startup.sh:
#!/bin/bash
sh /root/foo/bar/foo-bar.sh
exit 0
3. 將腳本加入到開機啟動項中:
crontab -u root -e
在打開的文件末尾添加:@reboot /root/startup.sh
4. 啟動腳本:
sh /root/startup.sh
注意:在第三步中,我們使用了crontab的特性來完成開機啟動自定義腳本。@reboot表示在系統啟動後執行該指令。
四、小結
無論是使用init.d、systemd還是自定義腳本,都可以在Linux系統中設置開機自啟動程序。通過本文詳細的步驟說明,你可以很容易地根據你的實際需求進行開機自啟動設置。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/241140.html