请教一个有关Linux crontab 的问题。

本人是做设备维护的,对linux不太了解,现想对工控机器Linux系统进行定期清理垃圾文件,在Terminal中使用oper用户编辑 crontab -e ,新建了一个计划任务,并且可以正常按计划执行,可是机器关机重启后 crontab -l 查看计划任务已被清空,这是为什么?
crontab -e建立计划任务后查看 /var/spool/cron/crontabs文件夹修改日期变为当前时间,重启后该文件夹修改日期变回原来18年的时间,由于不知道root密码,所以没有权限打开文件夹,也没有权限把需要运行的脚本放进crond.hourly之类的文件夹,请教下有何解决方法?

img

根据您提供的情况,可能是由于文件系统设置了不允许持久化保存计划任务导致的。

在Linux中,通常使用crontab命令来管理定时任务,它会将任务写入/var/spool/cron/crontabs目录下对应用户的文件中。如果文件系统设置为只读,那么每次系统重启后都会还原到原始状态,导致之前的任务被清空。

解决方法:

使用root用户登录系统,编辑/etc/fstab文件,将文件系统的“ro”(只读)改为“rw”(可读写),重新挂载文件系统。

如果您没有root权限,则需要联系系统管理员来进行处理。您可以向管理员提供上述问题的描述以及您的需求,以便他们能够为您找到解决方案。

如果无法更改文件系统设置,您可以将计划任务保存在其他目录下,并编写脚本在系统启动时自动添加计划任务。具体的操作可以参考以下步骤:

1)将计划任务保存在其他目录下,例如/home/user/crontab.txt。

2)创建一个启动脚本,例如/home/user/startup.sh,并在其中添加以下内容:

go
Copy code

#!/bin/bash
crontab /home/user/crontab.txt

3)将启动脚本添加到系统启动项中,使其在每次系统启动时自动运行。

bash
Copy code
您可以编辑/etc/rc.local文件,在其中添加以下内容:

/bin/bash /home/user/startup.sh &

注意,/etc/rc.local文件在某些Linux系统中已被弃用,您需要根据具体情况进行调整。
希望以上解决方法能够帮到您。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^