我有一个bash脚本,如果我在计算机上的任何目录中,都可以用cd ~/Documents/Code/shhh/ && ./testy
执行,并且可以成功推送到我想要的github。
我正试图安排一项日常工作来执行此操作,所以我运行了crontab -e
,它打开了一个nano编辑器,然后我将30 20 * * * cd ~/Documents/Code/shhh/ && ./testy
设置为每天晚上10:30运行,并击中控件O,输入并控制X。但是它仍然没有执行。当我键入crontab -l
时,它会显示我的命令,并且在打开新窗口时会显示一条You have new mail.
消息。即使从其他任何目录运行该命令,我的命令也不会执行。
我认为我的crontab作业位于/var/at/tmp
,所以我运行了30 20 * * * cd ../../../Users/squirrel/Documents/Code/shhh/ && ./testy
,但仍然没有任何反应,即使我从该目录中将其写出来也可以运行。旁注,即使使用sudo
好,当我输入mail
时,我看到很多消息,并且在内部出现此错误
---------------Checking Status of 2---------------
[master 0c1fff8] hardyharhar
1 file changed, 1 insertion(+), 1 deletion(-)
fatal: could not read Username for 'https://github.com': Device not configured
答案 0 :(得分:1)
默认情况下,当您打开nano Input_file
时,它将以INSERT模式打开(不同于vi
,我们必须通过按i
键显式进入INSERT模式)。现在,完成CTNRL+O
后,它将询问您是否要将更改保存到打开的文件中,例如-> File Name to Write: Input_file
如果按ENTER,则将其保存并返回到输入新行的屏幕(到Input_file)。现在您可以按CONTRL+X
从Input_file中出来。保存后可能会卡住并想出来然后再尝试一次?
答案 1 :(得分:1)
crontab -e
根本不会“实时”编辑crontab文件-仅在保存更改 并退出编辑器后,更改才会保存到活动文件中。
听起来您可能使用了错误的目录路径。通常,将从用户的主目录开始执行crontab条目中的命令。因此,如果主目录为/ Users / squirrl,则命令cd ../parent_directory/
将尝试移至/ Users / parent_directory。我怀疑这不是您想要的。
最后,请注意,cron作业在非常小的环境下运行,而没有运行大多数常用的shell安装文件(例如.bashrc)。最值得注意的是,如果脚本使用/ bin或/ usr / bin中没有的任何命令,则您将需要使用它们的显式完整路径,或者更改PATH变量以包括它们所在的目录。 / p>