2016-08-30 8 views
0

と私は-ebashスクリプトは、独自に罰金実行するが、cronの

のcrontabを入力していないログファイルがに/ kioskscripts作成され

*/1 * * * * /home/sara/Desktop/kioskscripts/reloadpage.sh >> /home/sara/Desktop/kioskscripts/logfile.log 

ように私のcrontabが見えますが、空のままです。

reloadpage.shは、予想通り、この

#!/bin/bash 
sleep 5 
/usr/bin/xdotool key F5 

のsh reloadpage.sh

作品のように見えるし、実行後に5秒を押され、F5キーをシミュレートします。

+0

なぜ 'xdotool'が標準出力に何か書き込むことを期待していますか?それとも、あなたが書きたいと思っていますか? – rici

+0

私は、reloadpage.shを実行するとエラーが発生した場合、それがログファイルに書き込まれると予想しました。その部分は、スクリプトが1分に1回正しく実行されるようには重要ではありません。 –

+0

reloadpage.shを実行するとエラーが発生した場合、エラーはstdoutではなくstderrに書き込まれます。ですから、それを捕捉するには '2 >>'を使う必要があります。 (ただし、キーストロークイベントがターゲットウィンドウで処理されないと、 'xdotool'はエラーを出さないと思う) – rici

答えて

2

cronによって実行されるプログラムにはアクティブなウィンドウがないため、--windowオプションを使用してキーストロークを送信するウィンドウを明示的に指定する必要があります。

現在アクティブなウィンドウのウィンドウIDはxdotool getactivewindowで取得し、その番号をxdotoolコマンドで使用できます。または、さまざまなオプションを指定してxdotool searchを使用すると、キーストロークを誘導するウィンドウを見つけることができます。さまざまな検索オプションについては、man xdotoolをお読みください。 (xdotool search --name Foo key F5は、FOOという名前のウィンドウにF5を送信します)

しかし、これは、指定されたウィンドウがイベントを受け入れ、多くのウィンドウがそうでない場合にのみ機能します。

+0

Chromeはキーストロークを受け入れるが、フォーカスしているときのみ、これは問題ない。あなたなしでこれを見つけられなかったでしょうか。 –

+0

@BrianHotopp:xdotoolコマンドに 'windowraise'を追加することもできます。しかし、私はそれが非常にユーザーの経験に混乱していると思う:) – rici

関連する問題