我有两台运行 Ubuntu 18.04 LTS 的 PC。它们是基于同一个 Linux 基础映像创建的。最近我发现在其中一台电脑上,我无法使用 crontab 查看或编辑单个用户的 cron 表。
任何用户(包括 root 用户)都会收到此错误:
$ crontab -l
crontab: usage error: only one operation permitted
usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
我起初以为是正在运行的进程可能已锁定 cron,但服务器完全重启后问题仍然存在。
在线研究仅表明一些管理员选择重新编译 crontab 以消除“删除”标志。但这里的情况并非如此。此 crontab 命令随操作系统一起提供,与工作服务器上的命令相同。
/var/log/syslog
或中也没有消息/var/log/cron.log
显示失败的原因。crontab -e
或crontab -l
两者都返回上述错误。
这是工作服务器和问题服务器的 /usr/bin/crontab。日期和大小相同。
-rwxr-sr-x 1 root crontab 39352 Nov 16 2017 /usr/bin/crontab
-rwxr-sr-x 1 root crontab 39352 Nov 16 2017 /usr/bin/crontab
$ diff -s crontab.serverA crontab.serverB
Files crontab.serverA and crontab.serverB are identical
最后,两个服务器上的/var/spool/cron
路径和文件的权限和所有权是相同的。
我可以向选定用户的 /etc/crontab 文件添加任何条目,但我只是想了解为什么会出现此错误。是否有某种遗留的锁定文件可能导致此问题?
答案1
感谢 @steeldriver 关于查看别名设置的评论,我发现有人在 /etc/profile 中添加了此行:
alias crontab='crontab -l'
我们的一些操作员喜欢使用快捷方式(例如别名 df='df -h'),这对我来说绝对是一个新问题,因为我们以前从未使用过该别名。果然,删除别名解决了这个问题。我还确认,如果您重复两次相同的标志,就会触发错误消息和使用情况显示。
$ crontab -l -l
crontab: usage error: only one operation permitted
usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
谢谢您就去哪里寻找这种奇怪行为提供的建议。