我今天看了一下 crontab 的任务,居然回滚了生产环境 crontab 的配置……

2019-02-22 13:14:58 +08:00
 phpfpm

早晨到公司上班,同事说某台 crontab 的服务器负载有点高,于是我就登上去 敲了一行

phpfpm@cron:~$ sudo su www crontab -l

因为 php-fpm 和 php 脚本都是用 www 启动的,所以 crontab 的 job 也在 www 用户里面。

之后,弹出来一串 bash 报错之后,我就神奇的发现 crontab 的配置被回滚到一个一年前的备份了。 有人能猜到发生什么吗?

先不多说了,我赶飞机跑路了。。。

3496 次点击
所在节点    Linux
16 条回复
defunct9
2019-02-22 14:02:32 +08:00
猜不到,估计得打宇宙飞车跑路
secboy
2019-02-22 14:06:26 +08:00
说出你的故事
MeteorCat
2019-02-22 14:10:56 +08:00
我上次也是倒霉,sudo crontab -按下去的时候,打个喷嚏条件反射按了 r 和回车
9hills
2019-02-22 14:12:48 +08:00
没这么简单吧,你可以 history 看你具体执行的命令

crontab 后面加文件名可以加载文件内容到 crontab 中,百分之九十九的可能性是误操作了
mgso
2019-02-22 14:27:58 +08:00
顺便说下 键盘上 e 键和 r 键靠得太近了🤔🤔🤔
wingoo
2019-02-22 14:39:01 +08:00
e,r 也按错过一次, 一身冷汗, 还好有备份
joysir
2019-02-22 14:44:10 +08:00
你的命令写法错误,导致被解析为 crontab -l 被解析为 su 的参数了,具体如下:

1. sudo su www 切换到 www 用户,并进入该用户的家目录
2. crontab 打开当前目录的 crontab 文件并执行(然而,你 www 家目录正好有一个名为 crontab 的备份文件)
3. -l 模拟重新登录
joysir
2019-02-22 14:45:22 +08:00
@joysir 输入太快,第一句表达有误,应该是:
你的命令写法错误,导致 crontab -l 被解析为 su 的参数了,具体如下:
yulgang
2019-02-22 15:05:06 +08:00
难道你执行了 source ~/.bash_history ? 😂
phpfpm
2019-02-22 15:59:32 +08:00
@joysir 对头,我一会说详细的。
firebroo
2019-02-22 16:07:51 +08:00
顺便说下 键盘上 e 键和 r 键靠得太近了🤔🤔🤔
geeti
2019-02-22 16:20:26 +08:00
你们登陆 production 不需要第二个人在旁边看着么
phpfpm
2019-02-22 16:27:45 +08:00
@geeti emm 如果不执行危险操作一般都是自己来吧
and,如果有一些修改的什么的走 saltstack

对于 crontab,我们有一套管理平台平时增删改都在那上面
排查问题的时候我就顺手在服务器上看了。。
Ansen
2019-02-22 16:39:17 +08:00
所以我一般都是 cat /var/spool/cron/xxxx
BubbleNoodle
2019-02-22 17:03:58 +08:00
不建议在环境变量下面,引用 crontab

踏踏实实放在 etc 下面。
phpfpm
2019-02-25 17:52:35 +08:00
@Ansen 好主意~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/537605

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX