linux - 在 Cron 上运行 Bash 脚本:Centos7
问题描述
我在下面有以下脚本,它将发送关于 /tmp 和 /var/tmp 目录在 Cron 上运行的完整程度的桌面通知。下面是脚本。
tmpsize=`du -sm /tmp | cut -f1`
varsize=`du -sm /var/tmp | cut -f1`
if { [ $tmpsize -gt 1024 ] && [ $tmpsize -lt 7001 ]; } || { [ $varsize -gt 1024 ] && [ $varsize -lt 7001 ]; } then
/usr/bin/notify-send -- "Disk Warning" "/tmp folder is ${tmpsize}MB\n/var/tmp is ${varsize}MB"
elif [ $tmpsize -gt 7000 ] || [ $varsize -gt 7000 ] ; then
/usr/bin/notify-send -- "Disk Warning" "/tmp folder it ${tmpsize}MB out of 8GB\n/var/tmp is ${varsize}MB out of 8GB\n/Please Clear out your /tmp using rm -rf /tmp and your /var/tmp using rm -rf /var/tmp"
else
/usr/bin/notify-send -- "Disk Warning" "All clear ${tmpsize}MB"
fi
在我的 shell 上运行这个 bash 脚本时,它运行良好,并且以 root 身份运行。我正在使用以下 cron:sudo crontab -e
为了使它在我的 Centos7 机器上运行。*/1 * * * * PATH/to/file/user/tmp_warning.sh
. 然而,随着这个 cron 每分钟运行一次,通知不会出现在我的桌面上。我什至尝试DISPLAY=:0
在 cron 中使用。我还检查了/var/log/cron
cron 正在运行的,没有任何问题。关于我缺少什么的任何想法?
解决方案
推荐阅读
- python - 根据列数据从 CSV 中提取行
- salesforce - 使用源记录中的值更新目标记录中的字段,但不覆盖 Salesforce 中源记录中的相同字段
- c# - 如何在 C# 中使用 LINQ 过滤嵌套字典?
- flask - FLASK:请求的 URL 不允许该方法
- azure-active-directory - 如何在 Azure ADB2C 中生成证书签名请求 (CSR) 文件和密钥对?
- function - 为什么 Octave 看不到这个物体?
- visual-studio - 未为字符串和类型 object() 定义运算符“&”
- python - 在 Python 中创建“重做”函数以返回多个函数的开头
- javascript - “Adobe acrobat javscript” 为什么当我选择值时我的第二个下拉列表没有填充?但 1s 的下拉菜单工作正常
- c - MPI_Reduce 和 MPI_Allreduce - 如何在排名为 0 的节点上存储单个总数?