目录

1.定时器方式crontab

2.systemd添加重启服务

tip:


Linux重启自动加载服务目前有多种方法,板子是debian10系统,出于版本和操作是否繁琐两方面考虑,故尝试使用systemd加载服务方式和crontab定时器方式。先说定时器方式crontab。

1.定时器方式crontab

crontab其实是Linux系统的定时器,用户可以往里面添加定时任务。我们可以通过配置循环执行某个任务。

(想要了解更多请参考 man 或 --help文档。)

ARM 环境重启容器 armbian重启_linux

crontab -e

@reboot /home/xxx/xxxx.sh

 

ARM 环境重启容器 armbian重启_linux_02

但是,有一些任务因为别的原因未能实现重启加载,比如有些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/ 目录结构如下图。

ARM 环境重启容器 armbian重启_ARM 环境重启容器_03

 创建一个后缀为 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