Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Crontab将不执行脚本_Linux_Shell_Crontab - Fatal编程技术网

Linux Crontab将不执行脚本

Linux Crontab将不执行脚本,linux,shell,crontab,Linux,Shell,Crontab,我对crontab有问题,它不执行shell sript Crontab-l: 01 * * * * login sh ~/delete.sh 通常每分钟它都应该执行delete.sh,但实际上不是这样 系统日志中没有任何内容: Jul 8 14:00:31 crontab[22307]: (login) LIST (login) Jul 8 14:01:08 crontab[22581]: (login) BEGIN EDIT (login) Jul 8 14:01:51 cronta

我对crontab有问题,它不执行shell sript

Crontab-l:

01 * * * * login sh ~/delete.sh
通常每分钟它都应该执行delete.sh,但实际上不是这样

系统日志中没有任何内容:

Jul  8 14:00:31 crontab[22307]: (login) LIST (login)
Jul  8 14:01:08 crontab[22581]: (login) BEGIN EDIT (login)
Jul  8 14:01:51 crontab[22581]: (login) REPLACE (login)
Jul  8 14:01:51 crontab[22581]: (login) END EDIT (login)
Jul  8 14:02:01 cron[15185]: (login) RELOAD (crontabs/login)
--> THAT'S ALL. 
PS:我试着以root用户和普通用户的身份运行它,但在这两种情况下都没有成功。

您希望这样:

01 * * * * login sh ~/delete.sh
每分钟运行一次命令。事实上,它每小时只运行一分钟

将其更改为:

* * * * * login sh ~/delete.sh
为解决意见中提出的问题:

Cron作业以有限的
$PATH
运行,但
/bin
肯定位于
$PATH
中,因此无需将
sh
替换为
/bin/sh

无需显式调用
sh
。只需确保
~/delete.sh
有一个正确的(
#!/bin/sh
#!/bin/bash
)并且它是可执行的(
chmod+x~/delete.sh
),您可以直接调用它

我不知道你为什么有一个
login
命令。尝试从cron作业登录是没有意义的。在任何情况下,
login
都不会将命令作为参数

如果
login
是用户名而不是命令,请记住crontab条目有两种不同的语法。在正常语法中,每行由5个字段组成,指定作业的运行时间,然后是命令及其参数。系统crontab条目在时间规范和命令之间添加用户帐户名。详情请参阅。在正常使用中,您应该使用正常的用户语法,并使用
crontab
命令管理crontab;不要编辑
/etc/crontab
/etc/cron.*
下的文件,除非您必须这样做。

您希望:

01 * * * * login sh ~/delete.sh
每分钟运行一次命令。事实上,它每小时只运行一分钟

将其更改为:

* * * * * login sh ~/delete.sh
为解决意见中提出的问题:

Cron作业以有限的
$PATH
运行,但
/bin
肯定位于
$PATH
中,因此无需将
sh
替换为
/bin/sh

无需显式调用
sh
。只需确保
~/delete.sh
有一个正确的(
#!/bin/sh
#!/bin/bash
)并且它是可执行的(
chmod+x~/delete.sh
),您可以直接调用它

我不知道你为什么有一个
login
命令。尝试从cron作业登录是没有意义的。在任何情况下,
login
都不会将命令作为参数


如果
login
是用户名而不是命令,请记住crontab条目有两种不同的语法。在正常语法中,每行由5个字段组成,指定作业的运行时间,然后是命令及其参数。系统crontab条目在时间规范和命令之间添加用户帐户名。详情请参阅。在正常使用中,您应该使用正常的用户语法,并使用
crontab
命令管理crontab;除非必须,否则不要编辑
/etc/crontab
/etc/cron.
下的文件。

ubuntu-14.04-server-i386尝试将
sh
替换为
/bin/sh
,crontab不一定具有所有需要的路径。波浪号(~)不会扩展到您的主目录。这是一个shell函数。使用完整路径。并将~替换为完整路径。。@lornix说了什么;)01****login/bin/sh/home/login/delete.sh ubuntu-14.04-server-i386尝试将
sh
替换为
/bin/sh
,crontab不一定具有所需的所有路径。波浪号(~)不会扩展到您的主目录。这是一个shell函数。使用完整路径。并将~替换为完整路径。。@lornix说了什么;)01****登录/bin/sh/home/login/delete.sh