我有一个脚本,如果uptime超过 3 天,它会提醒我重新启动计算机(尽管现在将其设置为 0 天只是为了检查脚本是否正在运行,因为我的计算机仅启动了一天多..)。
我意识到这不是最优雅的脚本,但我正在尝试! :)
#!/bin/bash
up=$(uptime | grep "day" > /home/username/uptime.foo && awk < /home/username/uptime.foo '{ print $3 }')
[[ $up -gt 0 ]] && xmessage -center "Restart!"
Run Code Online (Sandbox Code Playgroud)
我已经使它可执行,chmod + x checkup.sh当我通过终端从终端运行它时它工作正常./checkup.sh
我的这个脚本的 crontab 条目是:
46 14 * * * /home/username/Desktop/./checkup.sh
所以它每天 14:46 运行......
所以......我认为它应该运行,除非我没有真正愚蠢的东西。另外,您认为可以将此 bash 脚本移至/bin吗?
Rob*_*ans 80
一心一意:
首先让我们给你一个基于用户的 bin 文件夹:
cd ~/ && mkdir bin
Run Code Online (Sandbox Code Playgroud)
你想使用 crontab。让我们从一些非常简单的事情开始:
* * * * * touch /tmp/testing.txt
Run Code Online (Sandbox Code Playgroud)
好的,这样就可以了
现在让我们尝试运行一个执行相同操作的脚本
* * * * * /home/username/bin/touchtest.sh
Run Code Online (Sandbox Code Playgroud)
每分钟运行一次,直到你让它工作
不,你不需要在行的中间有一个 ./ 。./ 用于提供相对网址。
好的,这样就可以了
现在让我们尝试运行一个调用 xmessage 的脚本
* * * * * /home/username/bin/rebootwarn.sh
Run Code Online (Sandbox Code Playgroud)
不工作
首先我们不需要依赖环境变量。这包括路径设置、x11 设置或其他任何设置(想到 python 和 ruby 环境变量...)
让我们让我们的看起来有点像 anacron 正确的 cron 文件..我把它保存为测试
#Borrowed from anacron
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
#End borrowed from anacron
* * * * * /bin/bash /home/username/bin/test.sh
Run Code Online (Sandbox Code Playgroud)
设置为每分钟运行一次
crontab test 导入它
进入脚本
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
export DISPLAY=:0.0
up=$(uptime | grep "day" > /home/dnaneet/uptime.foo && awk < /home/dnaneet/uptime.foo '{ print $3 }')
[[ $up -gt 0 ]] && xmessage -center "Restart!"`
Run Code Online (Sandbox Code Playgroud)
好的,这样就可以了……我们做了什么?
我们更改了所有命令,使其不依赖于我们没有明确设置的路径我们
使用 bash 显式运行我们的脚本
我们告诉脚本我们希望在 DISPLAY :0.0
小智 16
问题解决了阅读谷歌的手册:
描述:
#!/bin/bash用作标题的 脚本/home/wc3/palert/ 分析:
回答:
将您的环境使用下面的这一行放在您的脚本中:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/wc3/palert
Run Code Online (Sandbox Code Playgroud)
改变这个:/home/wc3/palert
与:你放置脚本的地方,例如/home/budi/script.sh
样本:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/budi
# Script continues...
Run Code Online (Sandbox Code Playgroud)
尝试将您的脚本放在 crontab 上。
| 归档时间: |
|
| 查看次数: |
316991 次 |
| 最近记录: |