/etc/crontab “test -x”代表什么

/etc/crontab “test -x”代表什么

在我的/etc/crontab文件中我有:

# m h dom mon dow user  command
17 *  * * * root    cd / && run-parts --report /etc/cron.hourly
25 6  * * * root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6  * * 7 root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6  1 * * root  test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#

我知道这在实践中是做什么的,但我不明白命令行。

男人“测试”根本没有帮助:

test - check file types and compare values

任何帮助将不胜感激

答案1

来自 FreeBSD 的man test:[1]

 -x file       True if file exists and is executable.  True indicates only
               that the execute flag is on.  If file is a directory, true
               indicates that file can be searched.

因此,cronjobs 测试是否已anacron安装 [2](即,在预期位置有一个名为 anacron 的可执行文件)并运行一些内容如果不- 即相应文件夹中的脚本/etc/cron.*

(1)Bash 的内置选项test有相同的-x选项

(2) Anacron 是一个 cron 替代品,专为不总是运行的计算机而设计,即,如果有作业要运行每周,它将运行每周,相对于计算机的正常运行时间,这意味着它不会每周五运行一次,而是每 24*7 小时正常运行时间运行一次。编辑我都错了,见评论)

答案2

您可能熟悉[ -x <filename> ]. test -x <filename>做同样的事情,测试这个文件是否存在并且可执行。

答案3

正如手册页中所引用的,test 与 eval 非常相似,它计算条件表达式 expr 并以返回状态退出。经常遇到的情况,测试用于确定文件的类型作为表达式,在这种情况下,它用于检查返回 true 或 false 情况。在您的 crontab 中test -x filename,其中文件名用作表达式。这也相当于[ -x filename ]。如果文件存在并且可执行(设置位),则返回 true。 man test给出了评估文件条件表达式和其他有效 shell 表达式的各种类型选项的明确细节。

例如:

test -1 -gt -2 && echo yes会打印是。

test 0x100 -eq 1 错误-->测试:-eq之前需要整数表达式

相关内容