首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令在Crontab中找不到

问命令在Crontab中找不到
EN

Ask Ubuntu用户
提问于 2019-08-18 11:57:30
回答 1查看 7.6K关注 0票数 2

我是Crontab和Linux的新手。我试图在Crontab中安排以下命令行指令:

speedtest-cli --csv &>> /home/pi/speedtestLog.txt

我试着去做:

*/1 * * * * speedtest-cli --csv >> /home/pi/speedtestLog.txt 2>&1

但是我得到了文件中附加的错误:

/bin/sh: 1: speedtest-cli: not found

我该怎么解决呢?

EN

回答 1

Ask Ubuntu用户

发布于 2019-08-18 13:02:29

上面的一些评论是正确的,但并没有解释原因。

PATH环境变量是搜索可执行二进制文件的文件系统路径列表,通常如下所示:

代码语言:javascript
复制
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

PATH变量由您使用的SHELL附加。在ubuntu中,/bin/sh链接到默认的shell,这是用于系统引导脚本(即cron)的破折号。破折号类似于痛击,但不完全相同。在终端中,Bash默认使用。

在基于Debian的系统(即Ubuntu)上,路径由pam_env根据/etc/环境的内容初始化:

代码语言:javascript
复制
$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

但是,像Dash/Bash这样的shell还根据调用方式(交互式和登录shell)而来源/etc/profile和~/.profile,其中这些脚本可以追加PATH环境变量。

尽管如此,速度测试-cli必须位于路径上的文件夹中,否则必须使用完整路径指定它。如果你想要选择1,你可以尝试

代码语言:javascript
复制
*/1 * * * * . /home/pi/.profile ; speedtest-cli --csv >> /home/pi/speedtestLog.txt 2>&1

注:感谢steeldriver指出“源.profile”是一种低级主义,而posix标准是". .profile“。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1166582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档