假设我at在 Linux 上运行一个脚本(下面的示例),我知道这将需要几个小时,甚至可能需要几天。我习惯于at在命令完成后发送带有命令输出的电子邮件,但是如果我想在完成之前查看当前输出怎么办?我们还假设我已经运行了脚本并且忘记使用tail、tee或其他类似方法重定向输出并且不想停止脚本。有没有办法做到这一点?
drew@anubis:~$ at now
warning: commands will be executed using /bin/sh
at> ./myscript.sh
at> <EOT>
job 3 at Sat Jan 7 09:31:00 2017
Run Code Online (Sandbox Code Playgroud) 我正在尝试安排一些程序的执行。我正在使用这个命令:
./tests.o | at 15:00&
Run Code Online (Sandbox Code Playgroud)
如果我理解正确,预期的行为是将执行延迟到 15:00。但是,如果我在top启动上述命令后立即运行,我可以看到 test.o 已经占用了 CPU 时间。
由于我需要对共享资源启动多个测试,我想知道如何正确使用“at”?
我究竟做错了什么?
我收到一封来自 root 的邮件,主题是
你的工作输出#
我猜这来自我的at队列,因为我认出了这个命令。但问题是我在at3 周前提交了这个命令,并且也应该在 3 周前执行。
所以我现在正在寻找at某种命令历史记录或日志,这些日志会告诉我at过去几周发出的命令。有谁知道这样的日志是否存在?
我正在寻找一些可能在特定时间启动另一个命令的 Linux 命令。
我知道这个at命令,但它只给我几分钟的精度,而我需要几秒的精度。是否有我不知道的 at 命令选项?或者我应该使用任何其他命令吗?
任何方向都会有用。
我已经atrun使用以下命令启动了守护进程。
$ sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
Run Code Online (Sandbox Code Playgroud)
将我的用户名添加到/var/at/at.allow文件中。
$ cat /var/at/at.allow
myusername
Run Code Online (Sandbox Code Playgroud)
并使用at命令创建了一个作业。
$ at now + 1 minute
touch /tmp/x.log
^D
job 1 at Fri Jan 1 09:56:00 2021
Run Code Online (Sandbox Code Playgroud)
我可以看到使用atq命令安排的作业。
但是我看不到/tmp/x.log在预定时间之后创建的文件。有什么我在这里遗漏的,或者有没有办法调试这个问题?
我想使用“at”命令列出。
我试试这个:
pedro@Pedro-PC:~$ ls -l | at 10:27
warning: commands will be executed using /bin/sh
job 5 at Tue Apr 20 10:27:00 2010
Run Code Online (Sandbox Code Playgroud)
但不起作用。
最近了解了atUnix系统中的命令。
假设我希望一个 Python 脚本(可能会崩溃)在启动后 2 小时运行。我做了这样的事情:
$ echo python3 my_script.py | at now + 2hours
Run Code Online (Sandbox Code Playgroud)
我有几个问题:
at不会通知我,而且我无权访问该错误。at因为它让我的生活变得更加轻松,但它真的意味着这样做吗?我应该使用其他工具吗?