在 csh 中运行 cronjob
Running cronjob in csh
我有一个用 csh 编写的脚本,我想每周运行一次。
我尝试为此使用 cronjob,但似乎 cronjob 正试图在 sh 中运行我的脚本,因此它无法正常工作。
可以做些什么来确保脚本在 cronjob 中正常运行,或者有没有其他方法可以在不使用 cronjob 的情况下完成我想做的事情?
我的 cron 作业看起来像这样:
0 0 * * 6 source ~/cron_job
~/cron_job 看起来像:
#!/bin/csh
source ~/.cshrc;
source ~/test_setup;
source ~/start_test
另请注意,直接在终端上运行 source ~/cron_job
可以正常工作,但 cronjob 无法正常工作。我收到以下错误:
/bin/sh: source ~/cron_job : No such file or directory
0 0 * * 6 source ~/cron_job
这会尝试 "include" 或 "source" 当前脚本中的文件;这是错误的,原因有很多:
- 您正在尝试获取
csh
脚本;
- 即使它是一个
sh
脚本,cron
希望您 运行 一个单独的程序,而不是 source
当前脚本中的某些东西(也许它 将 工作,我从未尝试过,但考虑两个脚本 sourcing
具有相同变量或函数名称的东西。糟糕!)
正确的方法是:
0 0 * * 6 csh -f ~/cron_job
这开始csh
; -f
是为了防止加载启动文件,这有时可能会干扰脚本的 运行ning。
导致该行为的最可能原因是您在 /etc/profile
文件中配置了 bourne shell。
cron(8) 使用您的 /etc/profile
数据 select shell 用于执行您的 crontab (??) 个作业,所以如果您想使用不同的 shell,您可以在子流程中完成,而不是使用源代码。
另一种方法是切换到 csh(1) 并使用它代替 sh(1).
我有一个用 csh 编写的脚本,我想每周运行一次。
我尝试为此使用 cronjob,但似乎 cronjob 正试图在 sh 中运行我的脚本,因此它无法正常工作。
可以做些什么来确保脚本在 cronjob 中正常运行,或者有没有其他方法可以在不使用 cronjob 的情况下完成我想做的事情?
我的 cron 作业看起来像这样:
0 0 * * 6 source ~/cron_job
~/cron_job 看起来像:
#!/bin/csh
source ~/.cshrc;
source ~/test_setup;
source ~/start_test
另请注意,直接在终端上运行 source ~/cron_job
可以正常工作,但 cronjob 无法正常工作。我收到以下错误:
/bin/sh: source ~/cron_job : No such file or directory
0 0 * * 6 source ~/cron_job
这会尝试 "include" 或 "source" 当前脚本中的文件;这是错误的,原因有很多:
- 您正在尝试获取
csh
脚本; - 即使它是一个
sh
脚本,cron
希望您 运行 一个单独的程序,而不是source
当前脚本中的某些东西(也许它 将 工作,我从未尝试过,但考虑两个脚本sourcing
具有相同变量或函数名称的东西。糟糕!)
正确的方法是:
0 0 * * 6 csh -f ~/cron_job
这开始csh
; -f
是为了防止加载启动文件,这有时可能会干扰脚本的 运行ning。
导致该行为的最可能原因是您在 /etc/profile
文件中配置了 bourne shell。
cron(8) 使用您的 /etc/profile
数据 select shell 用于执行您的 crontab (??) 个作业,所以如果您想使用不同的 shell,您可以在子流程中完成,而不是使用源代码。
另一种方法是切换到 csh(1) 并使用它代替 sh(1).