crontab 自动脚本求助

2020-08-30 11:12:30 +08:00
 nbweb
想每天定时获取硬盘温度,写入到 txt 文本里。debian 10.05

#!/bin/bash

# check HDD temperature

HDD_b_Temperature=$(smartctl -a /dev/sdb | grep 'Temperature' | awk '{print $10}')
HDD_c_Temperature=$(smartctl -a /dev/sdc | grep 'Temperature' | awk '{print $10}')

Time=$(date '+%Y-%m-%d %H:%M:%S')

echo $Time /dev/dab $HDD_b_Temperature /dev/dac $HDD_c_Temperature >> /root/hdd_status.txt

发现写入的文本里,没有数字
2020-08-30 11:03:01 /dev/dab /dev/dac
2020-08-30 11:08:01 /dev/dab /dev/dac

但是,手工执行 bash hdd.sh,就会有
2020-08-30 11:01:49 /dev/dab 47 /dev/dac 49

crontab 格式如下
00 02,14 * * * /bin/bash /root/hdd.sh
1256 次点击
所在节点    问与答
5 条回复
Cooky
2020-08-30 11:19:26 +08:00
把 stderr 也输进去看错误
calmzhu
2020-08-30 11:21:34 +08:00
crontab 里面用 / bin/ bash -l 执行吧
nbweb
2020-08-30 11:28:08 +08:00
@calmzhu 非常感谢,加上 bash -l 解决问题,太感谢了。

另外想问下,加个 l 是嘛意思?
calmzhu
2020-08-30 11:38:20 +08:00
@nbweb

crontab 的执行环境跟 UserLogin 的执行环境是不一样的。

-l 参数的化,看下 man
ticotic
2020-08-30 18:48:30 +08:00
login shell 所设置的环境变量$PATH,和 crontab 里的不一致吧。
/etc/profile
$HOME/.bash_profile
$HOME/.bashrc
$HOME/.bash_login
$HOME/.profile

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/702551

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX