crontab调用脚本的环境变量怎么设置
-
- 帖子: 173
- 注册时间: 2010-11-09 3:06
crontab调用脚本的环境变量怎么设置
最近打算监控温度和电量 报警脚本已经写好了 可以正常运行 但是到了定时任务里面环境变量出错了
我有一个代码文件public.myname提供各种功能 这里面有一个sensors.nvme函数监管硬盘温度并调用octave进行运算和报警 那么脚本的写法就是
#! /bin/bash
. /pwd/public*
sensors.nvme
然后发现crontab无法识别这个环境变量
我有一个代码文件public.myname提供各种功能 这里面有一个sensors.nvme函数监管硬盘温度并调用octave进行运算和报警 那么脚本的写法就是
#! /bin/bash
. /pwd/public*
sensors.nvme
然后发现crontab无法识别这个环境变量
- astolia
- 论坛版主
- 帖子: 6542
- 注册时间: 2008-09-18 13:11
- sunfish
- 帖子: 989
- 注册时间: 2008-05-03 1:53
-
- 帖子: 173
- 注册时间: 2010-11-09 3:06
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: crontab调用脚本的环境变量怎么设置
你提供的信息太破碎不全了。
从仅有的信息来看,有以下问题:
1. cron 跑任务时使用的是 /bin/sh,不是 bash。sh 支持的语法要少很多
2. 我不确定你的 . / 是真的 . / 还是你想打 ./ 但是不小心多了一个空格。如果是 . / 那么是由当前 shell(sh)去执行脚本,否则是执行文件,由 shebang(#!)指定用于运行脚本的解释器
3. 不知道你说的「环境变量」是什么、在哪里。建议重新描述问题
从仅有的信息来看,有以下问题:
1. cron 跑任务时使用的是 /bin/sh,不是 bash。sh 支持的语法要少很多
2. 我不确定你的 . / 是真的 . / 还是你想打 ./ 但是不小心多了一个空格。如果是 . / 那么是由当前 shell(sh)去执行脚本,否则是执行文件,由 shebang(#!)指定用于运行脚本的解释器
3. 不知道你说的「环境变量」是什么、在哪里。建议重新描述问题
-
- 帖子: 173
- 注册时间: 2010-11-09 3:06
Re: crontab调用脚本的环境变量怎么设置
原来是/bin/sh的差别 我对sh很不熟悉 只会bash 代码量很大 六百多行 重新规范很麻烦 能直接指定crontab用bash吗
-
- 帖子: 173
- 注册时间: 2010-11-09 3:06
Re: crontab调用脚本的环境变量怎么设置
补充 . 后面空格没有错 就是source命令
-
- 帖子: 173
- 注册时间: 2010-11-09 3:06
Re: crontab调用脚本的环境变量怎么设置
如果 直接./script是不是可以直接在脚本里面指定bash运行?吃饭后我去试一下
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: crontab调用脚本的环境变量怎么设置
source 那就是当前 shell 跑了。
你的脚本有写 shebang,你再给执行权限(chmod +x xxx),就可以指定路径来执行了。
你的脚本有写 shebang,你再给执行权限(chmod +x xxx),就可以指定路径来执行了。
-
- 帖子: 173
- 注册时间: 2010-11-09 3:06
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: crontab调用脚本的环境变量怎么设置
你需要 export 来导出给子进程使用:
export DISPLAY=:0.0
export DISPLAY=:0.0
-
- 帖子: 173
- 注册时间: 2010-11-09 3:06
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: crontab调用脚本的环境变量怎么设置
你在 cron 里干嘛了啊……看起来你用用户级的 systemd.timer 会更方便一些。
-
- 帖子: 173
- 注册时间: 2010-11-09 3:06
Re: crontab调用脚本的环境变量怎么设置
再一次卡在了x11设置 我在想啊 我需要定时功能crontab有 我需要调用mplayer crontab不可以 atd.service可以 可不可以crontab触发at命令调用mplayer
echo cmd l at now嘛
echo cmd l at now嘛
- lilydjwg
- 论坛版主
- 帖子: 4252
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: crontab调用脚本的环境变量怎么设置
crond 和 atd 的运行环境是相同的,都不在用户的会话里边。