在 Ubuntu 18 上运行 at 命令时,我注意到我可以以 root 身份运行它,但不能以 root 身份运行它,从而导致输出错误,如下所示:
root@myserver3:~/# at now
warning: commands will be executed using /bin/sh
at> /bin/echo "this is root" > /tmp/at.out.txt
at> <EOT>
job 3 at Thu Jun 4 19:15:00 2020
root@myserver3:~/# cat /tmp/at.out.txt
this is root
root@myserver3:~/# exit
exit
rich@myserver3:~/$ at now
warning: commands will be executed using /bin/sh
at> /bin/echo "This is me" > /tmp/at.out.me.txt
at> <EOT>
at: Output error
rich@myserver3:~/$ cat /tmp/at.out.me.txt
cat: /tmp/at.out.me.txt: No such file or directory
我已经重新安装,并检查了 /var/spool/cron 的文件权限:
drwx-wx--T 2 root crontab 4.0K Jun 4 19:06 crontabs
drwxr-xr-x 5 root root 4.0K Jun 5 15:27 .
drwxrwx--T 2 daemon daemon 4.0K Jun 5 15:28 atspool
drwxrwx--T 2 daemon daemon 4.0K Jun 5 15:28 atjob
我检查了 /etc/at.deny 和 /etc/at.allow。它们看起来与此命令正常工作的服务器上的相同。
为确保万无一失,我删除了 /etc/at.allow /etc/at.deny,然后删除了 /var/spool/cron/atjobs 和 /var/spool/cron/atspool。然后我使用 apt-get install --reinstall at 重新安装。文件返回并具有与我工作服务器上相同的权限/内容。
(哈哈)不知道这里出了什么问题。
# ls -alhrt /usr/bin/at
-rwsr-sr-x 1 daemon daemon 51K Jan 14 2016 /usr/bin/at