在我的/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.*
。
(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之前需要整数表达式