0

私はcronを持っています

SHELL = / bin / bash

PATH = / usr / local / sbin:/ usr / local / bin:/ sbin:/ bin:/ usr / sbin:/ usr / bin

* * * * * root  /usr/bin/flock -xn /var/lock/script.lock -c '/bin/bash /root/Dropbox/1.sh'

私の1.sh

#!/bin/bash -l 

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 

x=1
while [ $x -le 3 ] 
do 
URL=$(head -n 1 /root/Dropbox/query.txt) 
lynx -dump  $URL | egrep '^http' > /root/Dropbox/urls.txt 
x=$(( $x + 1 )) 
done

デフォルトとしてBash

#echo $ SHELL

/ bin / bash

cronが1.shを実行しないのはなぜですか?

4

1 に答える 1

1

行crontab行の「root」を削除します。

* * * * * /usr/bin/flock -xn /var/lock/script.lock -c '/bin/bash /root/Dropbox/1.sh'

root権限が必要な場合は、rootユーザーのcrontabに入れてください。
「root」を使用すると、syslogまたはメッセージログにもエラーが表示されます。

そしてもちろん、cronデーモンが実行されていることを確認してください:ps -ef | grep cron

追加:ファイルをタッチするだけでテストしました(ubuntu上):
contab line:

* * * * * /usr/bin/flock -xn /var/lock/script.lock -c '/bin/bash ~/1.sh'

1.sh:

#!/bin/bash
touch /tmp/hallo

追加:(lynxコマンドを見て)1.shスクリプトのバージョンで動作します。

#!/bin/bash

x=1
while [ $x -le 3 ]
do
URL="http://www.subir.com/lynx.html"
lynx -dump  $URL | egrep '.*\. http' > urls.txt
x=$(( $x + 1 ))
done

egrepの正規表現を変更しました。lynxの出力は異なる場合があります(他のバージョンのlynx)。そして、固定のテストURL(lynxのマニュアルページ)を使用しました。urls.txtが入力されます。スクリプトはcronによってトリガーされます。whileは効果がなく、ループロジックは次回の実行時に変更されます。

stephan@coppi:~$ more urls.txt 
   1. http://lynx.isc.org/current/index.html
   2. http://lynx.isc.org/current/lynx2-8-8/lynx_help/lynx_help_main.html
   3. http://lynx.isc.org/current/lynx2-8-8/lynx_help/Lynx_users_guide.html
   4. http://lynx.isc.org/lynx2.8.7/index.html
   5. http://lynx.isc.org/lynx2.8.7/lynx2-8-7/lynx_help/lynx_help_main.html
   6. http://lynx.isc.org/lynx2.8.7/lynx2-8-7/lynx_help/Lynx_users_guide.html
   7. http://lynx.isc.org/mirrors.html
   8. http://lists.nongnu.org/mailman/listinfo/lynx-dev/
   9. http://lynx.isc.org/signatures.html
  10. http://validator.w3.org/check?uri=http%3A%2F%2Flynx.isc.org%2Findex.html
于 2012-11-01T12:21:33.733 に答える