服务器运维 | 自动执行脚本的几种方式
唠唠闲话
自动联网脚本,开机启动后自动挂载磁盘,内网穿透服务开机自启等。
服务器重启后,或者间隔一段时间,会自动断网,此时需要重新运行,登录服务器脚本。
以服务器自动联网为例,介绍几种方式:
- 后台运行脚本
- crontab 定时任务
- systemd 服务
后台运行脚本
一个最简单省事的方式,tmux + shell 编写自动操作脚本。假设 mylogin
为登录脚本,编写 autologin.sh
文件:
1 |
|
运行 tmux,在后台运行该文件,每隔 10min 检测一次网络状态。当然也可以用 nohup 运行,通过 nohup 日志查看运行状态。
crontab 定时任务
crontab
是 Unix 和 Unix 类操作系统中用于设置周期性执行任务的工具。crontab
的名字来自 “cron table”,因为它允许用户编辑一个表格(crontab 文件),用于定义任务的执行计划。Cron 是系统守护进程,它按照 crontab 文件中定义的时间表来执行任务。任务可以是任何可以在 shell 中运行的命令或脚本。
同样地,先编写脚本,并放到 /srv/network-login
目录下,其中 mylogin
为登录脚本:
1 |
|
输入 crontab -e
,并添加规则:
1 | */10 * * * * /srv/network-login/login.sh |
此时系统会每隔 10min 执行一次 mylogin
脚本,每次重启后都会自动执行。
注:首次执行
crontab
会提示选择编辑器,后续如果需要更换编辑器,输入select-editor
即可。
时间规则
crontab 任务的时间表由五个字段组成,分别代表分钟、小时、日期、月份和星期几。每个字段可以接受一个数字或者特定的字符,举几个例子:
分钟 | 小时 | 日期 | 月份 | 星期 | 含义 |
---|---|---|---|---|---|
* |
* |
* |
* |
* |
每分钟运行一次 |
0 |
0 |
* |
* |
* |
每天凌晨(00:00)运行 |
0 |
9 |
* |
* |
1 |
每周一上午 9 点运行 |
0 |
12 |
1 |
* |
* |
每月第一天中午 12 点运行 |
15 |
* |
* |
* |
* |
每小时的第 15 分钟运行 |
*/15 |
* |
* |
* |
* |
每 15 分钟运行一次 |
0 |
* |
* |
* |
1-5 |
工作日(周一至周五)每小时运行 |
0 |
0 |
1 |
1 |
* |
每年 1 月 1 日午夜运行 |
上边表格展示了 crontab
的时间设置及其对应的执行效果。通过使用不同的时间组合,可以灵活地安排定时任务以满足特定的需求。
systemd 服务
文章采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 学习空间!
评论