我尝试使用以下命令将我的 Crontab 备份到文件:crontab -l > backup/crontab
. 但这只会在目录中创建空文件backup
,并且不会将输出打印到终端。该命令的退出代码是0
.
如果我crontab -l
没有重定向,我会得到预期的输出:
/5 * * * * /path/to/script
...
为什么我的命令无法将我的 Crontab 内容写入文件,我应该怎么做才能使它工作?
我正在使用 Centos7.7
并安装了以下版本的 Cron 软件包:
crontabs-1.11-6.20121102git.el7.noarch
cronie-1.4.11-23.el7.x86_64
cronie-anacron-1.4.11-23.el7.x86_64
我使用的外壳是GNU bash, version 4.2.46
.
编辑:
[user@host ~]$ crontab -l > backup/crontab
[user@host ~]$ ll backup
total 248K
drwx------. 28 user user 4,0K 31.10. 09:30 .
drwxr-xr-x. 7 user user 4,0K 1.10. 12:58 ..
-rw-rw-r--. 1 user user 0 31.10. 09:30 crontab
...
备份是本地目录,并具有以下 Selinux 策略:staff_u:object_r:user_home_t:s0
.
编辑2:
crontab -l > /tmp/crontab
工作和其他位置我也有写访问工作但是当目标在我的主目录中时它会失败。我想知道是否selinux
是造成这种情况的原因。
要忠实地重定向控制台输出,请将输出保存为字符串,使用引号绝对保留内容,如下所示:
或者,根据评论(我想得不够快,道歉!)
这可以防止以任何方式解释重定向的输出......例如,您的 crontab 示例开头的正斜杠。请注意,“echo -e”将解释转义序列 - 例如。像 \n、\r、\t 等字符 - 所以使用“echo”而不使用开关。
在大多数系统上,您使用的简单重定向(crontab -l > 文件名)应该没问题。