- ベストアンサー
シェルスクリプトを途中からバックグラウンドで動かす方法
OKwebbの回答
- OKwebb
- ベストアンサー率44% (92/208)
バックグランドにしたい処理を別シェルにして、バックグランドで起動すればいいのでは?
関連するQ&A
- rshを使うスクリプトをバックグラウンド実行
Linux+Perlでのお話です。 内部でsystem関数を使ってrshコマンドを実行しているperlスクリプト(以下、スクリプトAという)があります。 スクリプトAをフォアグラウンドで実行するとうまく流れるのですが、バックグラウンド実行すると、rshコマンドを実行した直後でjobが止まってしまいます。 もっと詳しく言いますと、スクリプトAのrshコマンドは、ディスクを共有しているリモートマシンに対して、スクリプトBを実行するように指示しています。 スクリプトBではとある計算を行なっており、その計算結果をファイルに出力しています。 そして、その結果をスクリプトAで読み込んで後処理を行うというものです。 ----- …(前処理)… system("rsh (ホスト名) \"(スクリプトB実行コマンド及び引数) 1> /dev/null 2> /dev/null\""); # ここでjobが止まってしまいます。 # ここで標準出力(ログファイルにリダイレクトしてる)に何か出力しようとしても、何も出力されてません。 (スクリプトBの結果ファイルの読み込み) …(後処理)… ----- Jobが止まってしまうと言っているのは、jobsコマンドで見ると"job stopped"となっている状態のことを言っています。 この状態でスクリプトBの結果はファイルに出力されているので、rshのコマンドはうまく投げられていると思います。 (「rshやsshは標準入力が期待されてるとバックグラウンド実行が出来ない」(?)というような記述をどこかで見かけたので、念のためrshに"< /dev/null"の記述を加えてもみたのですが、変わりませんでした) その後、止まっているjobをfgコマンドでフォアグラウンドで再開させると、最後まで問題なく実行されます。 フォアグラウンドで実行すればうまくいくのに、バックグラウンドで実行すると止まってしまうのが理解出来ません。 これは何が原因なのでしょうか。 そして、どうしたら解決出来るのか。 どなたかご存知でしたら、ご教示頂きたくお願い致します。
- ベストアンサー
- Perl
- 実行中のコマンドを、ログアウト後もバックグラウンドで実行させる方法(ksh)
ksh環境において、実行中のコマンドをログアウトしてもそのまま実行させる方法を教えてください。 ctrl+zでサスペンドにし、jobsでjob番号を確認してbg %<job番号>でバックグラウンドにするのはできましたが、exitでログアウトしターミナルを抜けるとjobが無くなってしまいます。 bashならdisownというコマンドがあるそうなのでdisown %<job番号>でいけるのではないかと思うのですが、kshではdisownに相当するようなものがあるのでしょうか? コマンド実行前なら『nohup <コマンド> &』でできるのは確認済みです。
- 締切済み
- その他(ITシステム運用・管理)
- Macでシェルを起動時にバックグラウンド実行
Mac OS X 10.9.2を使用しています. シェルスクリプトを,PC起動時にバックグラウンドで実行させたいと思っています. システム環境設定→ユーザーとグループ→ログイン項目 から,実行させたいシェルスクリプトを登録することで,起動時に実行するようにはなったのですが,起動時にターミナルが立ち上がってしまうのが気持ち悪いので,バックグラウンドで実行させたいです. どうすればよいでしょうか,回答よろしくお願いします.
- ベストアンサー
- Linux系OS
- バックグランド実行+ログアウトでジョブが残るのは?
以下のようなシェルをバックグランド実行した後、ログアウトしてもジョブ(プロセス)が残っているのはなぜなのでしょうか? バックグランド実行しても、ログアウトするとバックグランドプロセスはkillされてしまう。だからnohupを使いましょう、、とネットではよく書かれています。自分でこれを検証試みた結果、想定の 動きとならなかったので質問させてもらいました。 以下シェルを 「 ./test01.sh & 」と実行させるのですが、別コンソールでプロセスを監視している限り、最後まで動作し続けるのです。 どなたかおわかりになる方教えてください。 ◇検証用シェル #!/bin/sh echo "start" > ./test01.log for ((i=0 ; i<3 ; i++)); do sleep 60 echo $i >> ./test01.log date >> ./test01.log done
- ベストアンサー
- Linux系OS
- バックグラウンドからフォアグラウンドへの切り替え
LinuxでのC言語プログラムについての質問です。 バックグラウンドにてイベントを監視 ↓ イベントが発生したら別のプログラムにて処理を行う ↓ その後監視に戻る というプログラムを作っているのですが、 ”別のプログラムにて処理を行う”ところをフォアグラウンドにて 行いたいと思っています。 ・バックグラウンドで実行中にフォアグラウンドに切り替える。 ・バックグラウンドで実行中のプログラムから、別のプログラムを フォアグラウンドにて実行する。 このどちらかを行うことはできないでしょうか? よろしくお願い致します。
- 締切済み
- C・C++・C#
- シェル・スクリプトへの変数の定義方法を教えて下さい。
シェル・スクリプトへの変数の定義方法を教えて下さい。 下記コマンドを実行するには、変数にどの様に指定すれば良いでしょうか。 宜しくお願い致します。 手入力での正しいパラメーターの渡し方。 ./test.sh parm1 parm2 "parm3 a b [\"X\" \"Y\"];" シェル・スクリプトでのパラメーターの渡し方は? #!/bin/bash Cmd=" ????????????? どの様に指定すれば良いでしょうか? ?????????????" buf=$(Cmd)
- 締切済み
- その他(プログラミング・開発)
- シェルスクリプトをローカルで動作させるには
cronジョブが使えるレンタルサーバーを使用しており、cronジョブから起動するshスクリプトを作ろうと思っています。 そこでシェルスクリプトを簡単に書こうと思っているのですが、プログラムはphpしかわかりません。勉強するためにはローカルで実行できる環境が必要だと思っています。 ネットでよく調べてみたのですが、シェルスクリプトをローカルで動作させる方法がわかりません。コマンドプロンプトから実行できたりしないんでしょうか?
- ベストアンサー
- その他(プログラミング・開発)
- シェルスクリプト trap処理につきまして
シェルスクリプトを作成しておりますが、 正常に動作しないので、ご教授いただけますでしょうか。 以下、作成したスクリプトを記載いたします。 #!/bin/sh trap "echo 'stopped'" 1 2 3 15 echo start sleep 10 echo end 上記のようなスクリプトを作成し、trap処理のテストを 行いたいのですが、上記スクリプト実行中で 「Ctrl+C」を押して、処理を止めても trap処理の「stopped」が表示されません。 スクリプトが処理が終わり、 コマンド入力できるようになったところで、「Ctrl+C」を押すと 「stopped」が表示されます。 スクリプト内で処理を止めた場合に「stopped」を表示させることが出来ず、困っております。 どなたかご教授いただけますでしょうか。 宜しくお願い致します。
- ベストアンサー
- Linux系OS
- cronジョブ
cronで設定したジョブは、 設定した時間に自動で動き出すと思っています。 このときインターネットに対して、あるhtmlページを取得するcronを毎朝11時に設定してたとします。 11時から12時の間にジョブがいつも終了してたとします。 質問: ★11時40分に、11時に動き出したcronジョブをバックグラウンドではなく、 フォアグラウンド(コンソール上に、シェルスクリプトをたたいてメッセージが流れる状態とおなじようにスクリプト結果をコンソールで確認)で表示するためには、 どうしたらいいのでしょうか? ★またフォアグラウンドで表示したジョブを、バックグラウンドに戻すにはどうしたらいいのでしょうか ご教授お願いします。
- ベストアンサー
- Linux系OS
お礼
ありがとうございます。 その方法でテストして、一応はうまくいきました。 でもやはり、ファイルの数を増やしたくないことと、 不定数パラメーターの引き渡しが面倒な点で, 一つのスクリプトで完結する方法の方が望ましいです。