目录
1.定时器方式crontab
2.systemd添加重启服务
tip:
Linux重启自动加载服务目前有多种方法,板子是debian10系统,出于版本和操作是否繁琐两方面考虑,故尝试使用systemd加载服务方式和crontab定时器方式。先说定时器方式crontab。
1.定时器方式crontab
crontab其实是Linux系统的定时器,用户可以往里面添加定时任务。我们可以通过配置循环执行某个任务。
(想要了解更多请参考 man 或 --help文档。)
crontab -e
@reboot /home/xxx/xxxx.sh
但是,有一些任务因为别的原因未能实现重启加载,比如有些IP是动态分配的,系统重启后便会更新一个新的IP,导致SSH连接经常中断。所以如果需要静态IP的话,可以在每次系统重启时设置一遍。(当然这不是一个好办法,虽然也能达成静态IP,但不如直接配置network.service。)
使用定时器的办法设置静态IP,结果并未成功,原因是crontab的reboot任务是在网络启动之前就执行完毕了。所以放弃,转而选择使用第二种办法。
2.systemd添加重启服务
首先要说的是,如果系统是init.d,则不能使用systemd方式添加重启服务。到底是新系统是旧系统,请使用 ps -ef | grep -l systemd
既然是systemd服务,便需要去systemd目录下设置。
一般systemd的服务相关文件放置在 /etc/systemd/system/ 目录下。查看该目录可知,其下很多后缀为.service的文件。我们需要在该目录下创建类似的.service文件以备系统调用。
/etc/systemd/system/ 目录结构如下图。
创建一个后缀为 auto_run_script.service 的文件,内容如下。
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=/home/xxxx/xxx/auto_run_start.sh
[Install]
WantedBy=default.target
主要是 ExecStart=/home/xxxx/xxx/auto_run_start.sh 这一行,填写你需要在开机启动时添加的sh文件。
并将 你的shell脚本拷贝一份到该目录下,然后执行命令:
sudo systemctl daemon-reload
sudo systemctl enable auto_run_script.service
sudo reboot #重启
系统重启时,便会加载你设置的服务。
tip:
1.如果想查看systemd正在运行的服务列表,可以使用:
systemctl list-unit-files --type=service | grep enabled
2.查看服务的状态:
systemctl status auto_run_script.service
3.停止服务命令:
sudo systemctl stop auto_run_script.service
4.服务失能命令:
sudo systemctl disable auto_run_script.service
5.锁定服务命令:
sudo systemctl mask auto_run_script.service
6.解锁服务命令:
sudo systemctl unmask auto_run_script.service