手动运行与自动运行得出结果不一样,求大神指教

baidu_35361007 2016-06-19 05:35:52
sh脚本 要求从passwd文件里面提取当前用户的文件夹
然后将时间,进程,写进LOG. 再把LOG保存在相对用户文件夹里.
我完成之后发现,手动运行没问题,但添加到crontab里自动运行就不行
例如用ROOT 用户做例子
手动运行后LOG会自动保存到 "/root/" 下
但若crontab自动运行后LOG则会保存在 "/" 下
以下是我写的脚本和crontab的配置

#!/bin/sh
echo `users` > USER
read NA1 NA2 NA3 NA4 < USER
echo $NA1
grep $NA1 passwd > USERINFO #grep `users` passwd into file USERINFO
old_IFS=$IFS
IFS=:
read UN PW UI GI UIN HD CM < USERINFO
IFS=$old_IFS #Get UN PW UI GI UIN HD CM from the USERINFO
date>DA #Sending `date` into file DA
read WE MO DA TI WS YE<DA #Get WE MO DA TI WS YE from the file DA
echo $TI >> $HD/LOG #Sending $TI into file LOG
echo `ps aux|grep terminal` >> $HD/LOG #Sending `ps aux | grep terminal` into file LOG
echo "-------------------------------------------------" >> $HD/LOG #Sending "-------------------------------------------------" into file LOG

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/cronjobs
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
*/1 * * * * root /cronjobs/3.sh

但若将$HD改为/root/则一切正常,但若是如此则不能实现不同账号不同文件夹的要求
在网上的资料全找过,添加source /etc/profile等也试过,还是没有用.
跪求各位大神指教!!
...全文
183 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_35361007 2016-06-20
  • 打赏
  • 举报
回复
顶上去...真心求助
图灵转世 2016-06-19
  • 打赏
  • 举报
回复
我也想知道答案。
baidu_35361007 2016-06-19
  • 打赏
  • 举报
回复
有人吗...真心求助

23,127

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧