运行 特定时间的 cronjob
Run a cronjob at a specific time
我想 运行 在特定时间(仅一次!)特定脚本。如果我 运行 它通常是这样的:
marc@Marc-Linux:~/tennis_betting_strategy1/wrappers$ Rscript write_csv2.R
确实有效。但是,我想在 10:50 的 运行 的 cronjob 中将其编程,因此执行了以下操作:
50 10 11 05 * Rscript ~/csv_file/write_csv.R
但这似乎不起作用。有什么想法我哪里出错了吗?这些是 cron 包 im 的详细信息
使用:
PID COMMAND
1015 cron
我的系统时间也查出来了:
marc@Marc-Linux:~/tennis_betting_strategy1/wrappers$ date
wo mei 11 10:56:46 CEST 2016
有一个特殊工具只用于 运行 命令一次 - at
.
使用 at
您可以安排这样的命令:
at 09:05 am today
at> enter you commands...
请注意,您需要 atd
守护程序 运行。
不过,您的 crontab
条目看起来还不错。我建议检查 cron
守护进程是否为 运行(确切的守护进程名称取决于 cron 包;它可以是 cron
、crond
或 vixie-cron
, 例如)。检查守护进程是否为 运行 的一种方法是使用 ps
命令,例如:
$ ps -C cron -o pid,args
PID COMMAND
306 /usr/sbin/cron
一些建议。
阅读有关 Rscript
的 PATH variable. Notice that it is set differently in interactive shells (see your ~/.bashrc
) and in cron
or at
jobs. See also this 的更多信息。
用 shell 脚本替换您的命令,例如在 ~/bin/myrscriptjob.sh
myrscriptjob.sh
文件应以 #!/bin/sh
开头
确保 shell 脚本可执行:
chmod u+x ~/bin/myrscriptjob.sh
在您的 shell 脚本中添加一些日志记录,靠近开始;要么使用 logger(1) or at least some date(1) command suitably redirected,要么同时使用:
#!/bin/sh
# file myrscriptjob.sh
/bin/date +"myrscriptjob starting %c %n" > /tmp/myrscriptjob.start
/usr/bin/logger -t myrscript job starting $$
/usr/local/bin/Rscript $HOME/csv_file/write_csv.R
在上面的最后一行中,将 /usr/local/bin/Rscript
替换为在某些 interactive 终端中完成的 which Rscript
的输出。
请注意,您不应在 shell 脚本中使用 ~
(但在适当的时候将其替换为 $HOME
)。
最后,使用 at
来 运行 您的脚本 一次。如果你想在 crontab
作业中定期 运行 它,请给出绝对路径,例如
5 09 11 05 * $HOME/bin/myrscriptjob.sh
并检查 /tmp/myrscriptjob.start
和系统日志是否已成功启动。
顺便说一句,在您的 myrscriptjob.sh
脚本中,您可以将第一行 #!/bin/sh
替换为 #!/bin/sh -vx
(然后 shell 会详细说明执行情况,并且 cron
或 at
将向您发送一些电子邮件)。参见 dash(1), bash(1), execve(2)
对 Rscript 和 write_csv2.R 使用完整路径(从 / 开始)。检查示例命令如下
/tmp/myscript/Rscript /tmp/myfile/write_csv2.R
确保您具有 Rscript 的执行权限和在将创建 write_csv2.R 的文件夹中的写入权限(/tmp/myfile)
我想 运行 在特定时间(仅一次!)特定脚本。如果我 运行 它通常是这样的:
marc@Marc-Linux:~/tennis_betting_strategy1/wrappers$ Rscript write_csv2.R
确实有效。但是,我想在 10:50 的 运行 的 cronjob 中将其编程,因此执行了以下操作:
50 10 11 05 * Rscript ~/csv_file/write_csv.R
但这似乎不起作用。有什么想法我哪里出错了吗?这些是 cron 包 im 的详细信息 使用:
PID COMMAND
1015 cron
我的系统时间也查出来了:
marc@Marc-Linux:~/tennis_betting_strategy1/wrappers$ date
wo mei 11 10:56:46 CEST 2016
有一个特殊工具只用于 运行 命令一次 - at
.
使用 at
您可以安排这样的命令:
at 09:05 am today
at> enter you commands...
请注意,您需要 atd
守护程序 运行。
不过,您的 crontab
条目看起来还不错。我建议检查 cron
守护进程是否为 运行(确切的守护进程名称取决于 cron 包;它可以是 cron
、crond
或 vixie-cron
, 例如)。检查守护进程是否为 运行 的一种方法是使用 ps
命令,例如:
$ ps -C cron -o pid,args
PID COMMAND
306 /usr/sbin/cron
一些建议。
阅读有关 Rscript
的 PATH variable. Notice that it is set differently in interactive shells (see your ~/.bashrc
) and in cron
or at
jobs. See also this 的更多信息。
用 shell 脚本替换您的命令,例如在 ~/bin/myrscriptjob.sh
myrscriptjob.sh
文件应以 #!/bin/sh
确保 shell 脚本可执行:
chmod u+x ~/bin/myrscriptjob.sh
在您的 shell 脚本中添加一些日志记录,靠近开始;要么使用 logger(1) or at least some date(1) command suitably redirected,要么同时使用:
#!/bin/sh
# file myrscriptjob.sh
/bin/date +"myrscriptjob starting %c %n" > /tmp/myrscriptjob.start
/usr/bin/logger -t myrscript job starting $$
/usr/local/bin/Rscript $HOME/csv_file/write_csv.R
在上面的最后一行中,将 /usr/local/bin/Rscript
替换为在某些 interactive 终端中完成的 which Rscript
的输出。
请注意,您不应在 shell 脚本中使用 ~
(但在适当的时候将其替换为 $HOME
)。
最后,使用 at
来 运行 您的脚本 一次。如果你想在 crontab
作业中定期 运行 它,请给出绝对路径,例如
5 09 11 05 * $HOME/bin/myrscriptjob.sh
并检查 /tmp/myrscriptjob.start
和系统日志是否已成功启动。
顺便说一句,在您的 myrscriptjob.sh
脚本中,您可以将第一行 #!/bin/sh
替换为 #!/bin/sh -vx
(然后 shell 会详细说明执行情况,并且 cron
或 at
将向您发送一些电子邮件)。参见 dash(1), bash(1), execve(2)
对 Rscript 和 write_csv2.R 使用完整路径(从 / 开始)。检查示例命令如下
/tmp/myscript/Rscript /tmp/myfile/write_csv2.R
确保您具有 Rscript 的执行权限和在将创建 write_csv2.R 的文件夹中的写入权限(/tmp/myfile)