• ベストアンサー

shell Script の実行

超初心者です。 *.shをどうやって自動的に実行するですか? 例えば、HPを更新する時*.shを使うと自動的に更新して欲しいです。 教えてくださいますよう、お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dd44
  • ベストアンサー率28% (151/521)
回答No.1

実行させる環境を書きましょう。 あと、「自動」って言うのは、何をトリガーとするのでしょう? ある時間になったら実行ですか? shellって言ってるのでunix系OSだと思うんですが、時間ならCrontabでいいと思いますが。。

参考URL:
http://www.linux.or.jp/JM/html/cron/man5/crontab.5.html

関連するQ&A

  • scriptの実行するとき

    linux初心者ですが教えてください。 linuxでscriptを作成して自分で実行するときですが ファイル名.sh で実行できる時と sh ファイル名.sh としないと動かないときがありますが なぜでしょうか? 因みにredhatで実行権限は付けてます。

  • 外部スクリプトを切り離して実行させたい

    負荷が高まった時に何が原因か調べる為に外部スクリプトを呼び出したいのですが、 スクリプトの中で外部スクリプトを呼び出すと、実行が終わるまで待ってしまいます。 たとえばこの様な1.shを実行した場合 1.shの中身 #!/bin/sh AVERAGE=`uptime|awk '{print $(NF-2)}'|sed 's|\.||;s|,||'` if [ $AVERAGE -gt 500 ] ; then 2.sh fi ~略~ 負荷が高まり,2.shを実行して、fiの後の処理は2.shが終わるまで待つ事になってしまいます。 2.shの実行を切り離してfiの後の処理もスムーズに行いたいです。 現在、切り離しの為、メール送信させてトリガで2.shを動かしてますが、 mailユーザで2.shを実行すると、動作が非常に遅いのです。 root権限で、かつ画面がある状態で実行すると高速に処理されるようでした。 メール送信時に実行するスクリプトを1.5.shに、sudoを利用して root権限で実行されるようにしましたが、画面がない為か処理が遅いのです。 1.5.shの中身 sudo su - root -c "2.sh" tty?のようなことだと考えてますが(アバウトですいません)画面がない所から実行すると よくないようで、メールトリガのやり方でなく、1.shから2.shを実行する時に切り離すことが できないだろうかと考えました。 画面が問題なら解決しないかもしれないですが、 どなたかご存知の方がいたら教えてくださいませ。

  • cronでシェルスクリプトが実行されない

    Linuxでファイルのバックアップを取るため backup.shというシェルスクリプトを組み、コマンドから実行する場合問題ないことを 確認しています。ところがcronに設定し自動実行すると内容が実行されておりません。 /var/log/cronを確認したところ時間通り実行されているというログは残っています。 /var/spool/cron/にrootというファイルを作成し 00 23 * * * /BACKUP/backup.shを実行させたいのです。 なぜ、手動の場合は問題がないのにcronで設定すると問題が生じるのでしょう? もし、お分かりの方は教えてください。 OSはRed Hat Linux release 8.0 (Psyche)です。

  • このスクリプトの実行を中止しますか?

    昨日から、次のメッセージが起動の度に表示されます。 このスクリプトの実行を中止しますか? このページのスクリプトがinternet Explorer の実行速度を遅くしています。このスクリプトを 実行し続けると、コンピューターが反応しなくなる可能性があります。 パソコン初心者で、大変恐縮ですが、対処方法を御教授お願いします。 OSはXPで、internet Explorer8です。ホームページをmsnにしています。ヤフーの画面では表示されません。Fix it ソリューション で自動修復を実行しました。

  • Linuxでシェルスクリプトがフルパスだと実行できない

    Linuxでシェルスクリプトがフルパスだと実行できない こんにちは 現在linuxでシェルスクリプトを記載していて、やっと出来た!と思ったら、なぜかフルパスで実行すると失敗します。 中身は例えば #!bin/sh echo "hello" とし、ファイル名をtest.shとします。 実行時にカレントからだと上手くいきます。 ./test.sh ただし、フルパスで実行するとうまくいきません。 ./home/user/test.sh エラーは以下 bash: ./home/dv3/tet.sh:No such file or directory 所有者はrootでグループもrootにしてあります。 シェルの権限は755にして、rootで実行しています。 なぜカレントだと上手くいき、フルパスだと上手くいかないのでしょうか? パスが必要なコマンドも入っていないのに。。。 どなたかご教授いただけると幸いです。 宜しくお願い致します。

  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • Shellスクリプトについて

    趣味で自宅にubuntuを入れて、Linuxの本を片手にもって勉強している学生です それでshellスクリプトでテストの結果を入力したら自動的にA.B.Cと認識するプログラムを作ったんですけど $ ./test ./test: line 4: echoPlease input your record: command not found 12 ./test: line 7: case12in: command not found ./test: line 8: syntax error near unexpected token `)' ./test: line 8: `100 | 99 | 98 | 97 | 96 | 95 | 94 | 93 | 92 | 91| 90 ) echo"A";;' なぜコマンドが見つからないのかわかりません ちなみにプログラムは #!/bin/sh echo"Please input your record" read record case"$record"in 100|99|98|97|96|95|94|93|92|91|90) echo"A";; 89|88|87|86|85|84|83|82|81|80) echo"B";; 79|78|77|76|75|74|73|72|71|70) echo"C";; 69|68|67|66|65|64|63|62|61|60) echo"D";; 59|58|57|56|55|54|53|52|51|50) echo"E";; 49|48|47|46|45|44|43|42|41|40) echo"F";; 39|38|37|36|35|34|33|32|31|30) echo"G";; 29|28|27|26|25|24|23|22|21|20) echo"H";; 19|18|17|16|15|14|13|12|11|10) echo"I";; 9|8|7|6|5|4|3|2|1|0) echo"J";; *)echo"sorry,answer not recognized";; esac exit もしどこか間違っていたら教えてください

  • シェルスクリプトでPHPを実行したい

    シェルスクリプトでPHPを実行したいのですが、うまくできません。 centos5でcrontabに 20 0 * * * /bin/sh /var/www/html/test/test.sh と登録しています。 cronのlogをみたところ Dec 12 00:20:01 localhost crond[19060]: (root) CMD (/bin/sh /var/www/html/test/test.sh) と記録されていてここまでは問題ないように思えます。 test.shの中身は #!/bin/sh cd /var/www/html/test/ php -f daily.php > result exit になっています。 daily.phpが実行されないので、daily.phpに何かおかしなところがあるのかと思い daily.phpを直接ブラウザから起動してみたところ問題なく処理されました。 このような経緯でtest.shの中身が間違っていると思っているのですがどこが間違っているのか分かりません。 どなたかアドバイス頂けると助かります。

  • リモートでのスクリプトファイルの実行方法について

    Solaris9を利用しております。 データを更新するスクリプトファイル(shファイル)があり、現在はcronで スケジュール設定を行っております。 最近、そのスクリプトファイルの実行をユーザの意図したタイミングで走らせたい という要望が挙がっております。 ただし、そのユーザはUNIXについては全く知らない素人なため、直接コマンドを 実行させるのは避けたい状況です。(ログインパスワードも知らせたくない) という状況なのですが、簡単な操作でスクリプトを実行できる何か良い方法はありますでしょうか? 宜しくお願い致します。

  • シェルスクリプトで複数実行するには?

    web上からもアクセスできるphpに、定期的にアクセスするようにしたいと思っています。 定期的にアクセスするには、cronを利用すればできると思っていますが、phpへアクセスする方法が分からないために、別の記事にて質問させて頂いています。 (cronが利用できる、レンタルサーバを利用しております。) そこで、いろいろと調べていたところ、.shの拡張子のファイルを作成して、その中に命令事項を記入しておき、cronで.sh(シェルスクリプト?)を実行すれば良いみたいな事が記載されていました。 定期的自動にアクセスしたいphpファイルは複数あるので、phpファイルごとにcronを設定するより、このシェルスクリプトを利用して、複数のphpにアクセスできるようにできれば良いと思いました。 例えば「abc.sh」と言うファイルに、下記を記載してアップロード、パーミッションの設定。 #!/bin/sh/usr/bin/wget -q --spider http://xxx.yyy.com/abc/xxx.php そして、cronで実行日時を設定してこのファイルを実行すれば、「http://xxx.yyy.com/abc/xxx.php」へアクセスするような事が書かれていました。 複数のアドレスにアクセスさせたい場合は、.shのファイルにはどのように記述をすれば良いのでしょうか? またcron終了後にログメールが送信されてきますが、このログメールを送信しないようにするには、どのような記述をすれば良いのでしょうか? 一応調べてみたのですが、確認をお願いします。 abc.sh >/dev/null または abc.sh 2>&1 > /dev/null または abc.sh > /dev/null 2>&1 上記のような、複数の記述方法がありました。 どの記述方法がベターでしょうか。 質問をまとめますと、 複数のphpにアクセスする、シェルスクリプトの記述方法について。 cron終了後のログメールを送信しないようにするための、cronのコマンドの記述方法。 アドバイスを頂けると助かります。