Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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 调用包含输出的.sh时,crontab不输出任何内容_Linux_Shell_Output_Crontab - Fatal编程技术网

Linux 调用包含输出的.sh时,crontab不输出任何内容

Linux 调用包含输出的.sh时,crontab不输出任何内容,linux,shell,output,crontab,Linux,Shell,Output,Crontab,我在/home/me文件夹中有以下test.sh文件 #!/bin/sh _now=$(date +"%Y_%m_%d") _file="/home/me/$_now.txt" speedtest-cli --simple > $_file 其中speedtest cli是一个python脚本,它提供了internet启动和dll速度信息: 从/home/me调用test.sh效果非常好:我得到了所有信息的yyy_mm_dd.txt输出(dll加速等) 但是当我试图从crontab调用

我在
/home/me
文件夹中有以下
test.sh
文件

#!/bin/sh
_now=$(date +"%Y_%m_%d")
_file="/home/me/$_now.txt"
speedtest-cli --simple > $_file 
其中
speedtest cli
是一个python脚本,它提供了internet启动和dll速度信息:

/home/me
调用
test.sh
效果非常好:我得到了所有信息的
yyy_mm_dd.txt
输出(dll加速等)

但是当我试图从crontab调用
test.sh
时,我得到一个空的
yyy\u mm\u dd.txt
文件(里面没有任何内容)

内部
crontab-e

20 20 * * *  /home/me/test.sh

我做错什么了吗?

对于交互式shell,您的
路径可能与cronjob运行的上下文不同,因此您应该在crontab条目中指定
speedtest cli
的完整路径

交互式shell的
路径可能与cronjob运行的上下文不同,因此您应该在crontab条目中指定
speedtest cli
的完整路径

我怀疑有路径问题,所以

选择以下选项之一:

  • 在脚本顶部添加
    PATH=/usr/local/bin:/bin:/usr/bin
  • 在自己行的
    crontab-e
    顶部添加:
    PATH=/usr/local/bin:/bin:/usr/bin
  • 脚本顶部的
    source~/.bashrc
  • 为脚本中的每个命令添加完整路径

    • 我怀疑有路径问题,所以

      选择以下选项之一:

      • 在脚本顶部添加
        PATH=/usr/local/bin:/bin:/usr/bin
      • 在自己行的
        crontab-e
        顶部添加:
        PATH=/usr/local/bin:/bin:/usr/bin
      • 脚本顶部的
        source~/.bashrc
      • 为脚本中的每个命令添加完整路径

        • 是不是
          ~/.bashrc
          ?[带点]谢谢Gilles它很好用。我选择了第一个选项:PATH=/usr/local/bin:/bin:/usr/bin不是吗?[带点]谢谢Gilles它很好用。我选择了第一个选项:PATH=/usr/local/bin:/bin:/usr/bin是的,我认为您做错了什么:看起来您没有从cron作业中检查stderr;-)cron作业在不同于从登录shell运行脚本的环境中运行。是的,我认为您做错了:看起来您没有从cron作业中检查stderr;-)cron作业在不同于从登录shell运行脚本的环境中运行。