タグ付けされた質問 「background-process」

「バックグラウンド」プロセスは、「バックグラウンド」で(つまり、バックグラウンドで)実行され、ユーザーの介入なしに実行されるコンピュータープロセスです。このようなプロセスを使用するための一般的なタスクには、ロギング、システムモニタリング、スケジューリング、およびユーザー通知が含まれます。このタグは、バックグラウンドプロセスに関する質問に使用します。

3
コマンドラインアプリをバックグラウンドに直接送信するにはどうすればよいですか?
を押すctrl+zとアプリが停止することを既に知っています。bgコマンドを使用してアプリをバックグラウンドに送信できますが、それはアプリが停止する時間の短い期間があることを意味します。 アプリを停止せずにバックグラウンドに直接送信するにはどうすればよいですか?


1
バックグラウンドプロセスが終了するまで関数が戻らないのはなぜですか?
次のスクリプトを検討してください。 #!/bin/bash function start { leafpad & echo $! } PID=$(start) echo "PID is $PID" このスクリプトは、バックグラウンドプロセスであっても、リーフパッドプロセスが終了するまで閉じかっこを通過し続けません。 どうしてこれなの?関数からバックグラウンドプロセスを起動することはできますか?

8
複数のbashスクリプトを呼び出して、順番にではなく並行して実行する
:私は3つ(またはそれ以上)のbashスクリプトを持っていると仮定しscript1.sh、script2.shとscript3.sh。これら3つすべてのスクリプトを呼び出して、並行して実行したいと思います。これを行う1つの方法は、次のコマンドを実行することです。 nohup bash script1.sh & nohup bash script2.sh & nohup bash script3.sh & (一般に、スクリプトの終了には数時間または数日かかる可能性があるためnohup、コンソールが閉じても実行し続けるように使用したいと思います。) しかし、これら3つのコマンドを1 回の呼び出しで並行して実行する方法はありますか? 私は次のようなものを考えていました nohup bash script{1..3}.sh & しかし、これは、ではなく、、、およびを順番に実行するようscript1.shに見えます。script2.shscript3.sh


7
SSHセッションが終了すると、Pythonバックグラウンドプロセスが終了するのはなぜですか?
startup.shキーラインでpython3スクリプトを起動するbashスクリプトがあります(呼び出しましょう): nohup python3 -u <script> & sshこのスクリプトを直接呼び出して呼び出した場合、終了後もPythonスクリプトはバックグラウンドで実行され続けます。ただし、これを実行すると: ssh -i <keyfile> -o StrictHostKeyChecking=no <user>@<hostname> "./startup.sh" プロセスは実行を終了するとすぐにssh終了し、セッションを閉じます。 2つの違いは何ですか? 編集:Pythonスクリプトは、ボトル経由でWebサービスを実行しています。 EDIT2:を呼び出して実行するinitスクリプトを作成しようとしましたが、同じ動作になりました。startup.shssh -i <keyfile> -o StrictHostKeyChecking=no <user>@<hostname> "sudo service start <servicename>" EDIT3:多分それはスクリプト内の何か他のものです。スクリプトの大部分は次のとおりです。 chmod 700 ${key_loc} echo "INFO: Syncing files." rsync -azP -e "ssh -i ${key_loc} -o StrictHostKeyChecking=no" ${source_client_loc} ${remote_user}@${remote_hostname}:${destination_client_loc} echo "INFO: Running startup script." …


3
Linuxでコマンドの使用を待ちますか?
#!/bin/bash function back() { sleep $1 exit $2 } back $1 $2 & b=$! if `wait $!`;then echo success else echo failure fi bash-3.00# ./back 300 0 failure bash-3.00# ./back 300 1 failure success0を送信するときに終了ステータスとして期待していましたが、まだ取得していfailureます。 また、wait300秒待機しません。代わりに、すぐにメッセージを受け取ります。私は仮定$!の直接の子である$$私のスクリプトインチ そうじゃない? のような待機の終了ステータスをキャプチャすることは可能exit_status=$(wait $!)ですか? if ! ((exit_status));then echo sucess else failure fi

1
スクリプトからバックグラウンドプロセスを開始し、スクリプトの終了時に管理します
スクリプトからデーモンに似たプロセスを実行および構成したいと思います。 私のシェルはCygwinでエミュレートされたzshであり、デーモンは基本的なFTPサーバーであるSFKです。 ここで重要なのは、スクリプトstartserv.shを次のように作成できることです。 #!/bin/sh read -s -p "Enter Password: " pw user=testuser share=/fshare cmd="sfk ftpserv -user=$user -pw=$pw -usedir $share=$share" $cmd & スクリプトを実行した後startserv.sh、プロンプトを表示せずに停止(終了?)します: CTRL+ Cスクリプトとバックグラウンドジョブプロセスの両方を終了します。 叩くEnterスクリプトは、プロセスがバックグラウンドに残って終わります。 とにかく私はのみを経由して、それを見ることができpsないjobs私は、プロセスを閉じたいとき、そう、私は残忍送信する必要がありkill -9、私は賛成で避けたいのですが何かある信号、 CTRL+をC。 別の方法 は、スクリプト全体をバックグラウンドで実行することです。「Would be」ですがread、スクリプトがとして実行される場合、コマンドはユーザー入力を取得できませんstartserv.sh &。 真のデーモンではなく、一時サーバーが必要なことに注意してください。つまり、スクリプトが終了した後、サーバープロセスをバックグラウンドで実行して、(仮想マシンゲストで)簡単なインタラクティブシェルタスクを実行する必要がありますが、シェルを生き残るためのプロセスが必要です。したがって、nohup適切ではないようです。


4
bashでの2つの同時コマンドを含むCtrl-C
Linuxマシンのbashで2つのコマンドを同時に実行したい。したがって、私の./execute.shbashスクリプトに次のように記述します。 command 1 & command 2 echo "done" ただし、bashスクリプトを停止してCtrl+を押したい場合はC、2番目のコマンドのみが停止します。最初のコマンドは実行を続けます。完全なbashスクリプトが停止したことを確認するにはどうすればよいですか?または、いずれにせよ、両方のコマンドを停止するにはどうすればよいですか?この場合、Ctrl+ を何度押しCてもコマンドが実行され続け、端末を閉じる必要があるためです。


1
バックグラウンドで複数のbash関数を実行し、それらが戻るまで待機する
これは、nvidia-smi複数のホストでコマンドを実行し、その出力を共通ファイルに保存する単純なスクリプトです。ここでの目標は、非同期で実行することです。 ある&の終わりにprocess_host()十分な関数の呼び出し?私のスクリプトは正しいですか? #!/bin/bash HOSTS=(host1 host2 host3) OUTPUT_FILE=nvidia_smi.txt rm $OUTPUT_FILE process_host() { host=$1 echo "Processing" $host output=`ssh ${host} nvidia-smi` echo ${host} >> $OUTPUT_FILE echo "$output" >> $OUTPUT_FILE } for host in ${HOSTS[@]}; do process_host ${host} & done; wait cat $OUTPUT_FILE

4
バックグラウンドで同じコマンドを複数回実行する
複数のコマンドを実行し、bashを使用してそれらをバックグラウンドにするにはどうすればよいですか? 例えば: $ for i in {1..10}; do wait file$i &; done ここで、waitはカスタムバイナリです。 今、私はエラーを受け取ります: syntax error near unexpected token `;' 上記のコマンドを実行するとき。 バックグラウンドになったら、コマンドを並行して実行する必要があります。

4
2つのバックグラウンドコマンドが与えられた場合、どちらかが終了したときに残りのコマンドを終了します
2つのサーバーを起動する単純なbashスクリプトがあります。 #!/bin/bash (cd ./frontend && gulp serve) & (cd ./backend && gulp serve --verbose) 2番目のコマンドが終了すると、最初のコマンドが実行を継続しているようです。 どちらかのコマンドが終了した場合、もう一方が終了するように、これをどのように変更できますか? バックグラウンドプロセスのエラーレベルをチェックする必要はなく、終了したかどうかだけを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.