uptime
が3日以上の場合にコンピューターを再起動するように通知するスクリプトがあります(ただし、コンピューターが1日以上稼働しているためにスクリプトが実行されているかどうかを確認するためだけに0日に設定されています) ..)。
私はそれが最もエレガントなスクリプトではないことを理解していますが、私は試みています! :)
#!/bin/bash
up=$(uptime | grep "day" > /home/username/uptime.foo && awk < /home/username/uptime.foo '{ print $3 }')
[[ $up -gt 0 ]] && xmessage -center "Restart!"
chmod + x checkup.sh
で実行可能にしました。./checkup.sh
経由で端末から実行すると正常に動作します
このスクリプトのcrontabエントリは次のとおりです。
46 14 * * * /home/username/Desktop/./checkup.sh
したがって、毎日14時46分に実行されます。
だから...私は本当に愚かなことをしなかった場合を除き、実行する必要があると考えています。また、このbashスクリプトを/bin
に移動しても大丈夫だと思いますか?
一度に一つのことを:
まず、ユーザーベースのbinフォルダーを提供しましょう。
cd ~/ && mkdir bin
Crontabを使用します。本当にシンプルなものから始めましょう:
* * * * * touch /tmp/testing.txt
さて、それでうまくいきます
次に、同じことを行うスクリプトを実行してみましょう
* * * * * /home/username/bin/touchtest.sh
動作するまで1分間に1回実行する
いいえ、行の途中に./は必要ありません。 ./は、相対URLを指定する場合に使用します。
さて、それでうまくいきます
それでは、xmessageを呼び出すスクリプトを実行してみましょう。
* * * * * /home/username/bin/rebootwarn.sh
働いていない
まず、環境変数に依存しないようにする必要があります。これには、パス設定、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
毎分実行するように設定
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!"`
さて、それでうまくいきます...私たちは何をしましたか?
明示的に設定しなかったパスに依存しないようにすべてのコマンドを変更しました
bashを使用してスクリプトを明示的に実行しました
スクリプトに、DISPLAY:0.0になると予想していることを伝えました
Googleのマニュアルを読んで問題を解決しました。
説明:
#!/bin/bash
をヘッダーとして使用するスクリプトがあります/home/wc3/palert/
に配置しました分析:
回答:
以下の行を使用してスクリプトに環境を設定します:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/wc3/palert
これを変更:/home/wc3/palert
with:スクリプトを置く場所。 /home/budi/script.sh
サンプル:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/budi
# Script continues...
スクリプトをcrontabに配置してみてください。