Linux如何设置开机自启动sh文件

Linux 在 sh 文件出现后立即启动它。
首先给脚本添加执行命令权限: chmod +x script.sh
接下来,编辑 rc.local 文件,添加: sudo nano /etc/rc.local,添加 /path/to/script.sh
最后给 rc.local 赋予执行权限: sudo chmod +x /etc/rc.local,测试重启: sudo restart

linux怎么设置每2个小时自动重启一次,并且这个命令是开机启动

说实话,当我第一次接触Crontab时,我以为它是一个黑匣子。
直到半夜服务器突然死机,经过长时间排查发现某个脚本运行不正常,我才震惊地意识到定时任务的重要性。

有趣的是,Crontab 的语法其实有点反人类。
例如,如果您希望每天早上 5 :3 0 自动重新启动系统,只需将第 3 0 行 5 restart 添加到 /etc/crontab 文件的末尾即可。
但这里有一个陷阱,就是reboot命令在某些系统上需要sudo权限。
否则,cron 将默默失败。
当时我就踏进了这个坑,我花了很长时间才找到问题所在。

最奇怪的是环境变量。
您在终端中导出的变量可能在 cron 任务中不可用。
我有一个朋友写脚本,需要访问某个API,但是cron任务总是报错。
后来我发现我必须将 import API_KEY="xxx" 添加到脚本顶部,这产生了奇迹。
所以现在我们团队开发计划任务时,必须在脚本中重置所有必要的环境变量。

还有一点是,crontab 文件中 和 / 的用法有很大不同。
例如/5 表示每5 分钟执行一次,0-2 3 /2 表示0:00到2 3 :00每2 小时执行一次。
这种写法特别适合日常监控任务。
之前我写了一个脚本,每3 小时发送一次到监控站。
用/分隔的话不太方便。

另一个有趣的操作是crontab可以指定用户。
例如,如果要让cron以root用户执行命令,则必须使用crontab -u root -e进行编辑。
我在帮助优化系统运维的时候就用到了这个。
它已经更加标准化,可以避免直接在根 crontab 中编写 sudo 命令。

但是最烦人的是crontab -u参数。
并非所有系统都支持此功能。
我对旧的 Debian 版本很生气,认为参数写错了。
检查了半天,发现系统版本太旧了。
在这种情况下,您必须手动编辑 /var/spool/cron/crontabs/ 目录中用户各自的文件。

总之,Crontab 使用起来确实很方便,但是有太多让人抓狂的细节。
例如,修改/etc/crontab后,记得使用crond restart服务刷新配置,否则新添加的命令将不会生效。
我遇到过这个问题两次,所以现在我必须在更改后重新启动。

顺便说一句,如果您使用的是 CentOS 7 或更高版本,则应该使用 crontab -u root
这种编辑方法比旧系统中的 crontab -e 更安全。
不管怎样,在我十年的运维生涯中,我无数次爱上了Crontab。
还是个老头子,虽然有点急躁,但是能力很强。