シェルでコマンドを実行し、セッションを閉じてもコマンドを実行し続ける
質問
Puttyを使用してリモートサーバーに接続しています。私が知りたいのは、コマンドを記述して、Puttyとのセッションを閉じた後もコマンドを実行し続けることができる方法があるかどうかです。これは、コンピューターの電源を常に入れたままにしたくないからです。これを行う方法はありますか?。
ソリューションで更新
提示されている私の質問に対する最良の解決策は、追加のソフトウェアをインストールする必要がないため、 nohup などのコマンドのいずれかを使用することです。ただし、同じ問題画面を使用している場合は、それをインストールして使用してください。素晴らしいです。
コマンドと画面を使用していくつかのソリューションを提案するため、ノーマンラムジーの回答をお気に入りとして選択しました。ただし、他の回答、特にPEZの回答を確認してください。そうすると、どの画面でできるのかがわかります。
解決
nohup
、 disown
、および screen
はすべて優れていますが、 screen
は他の2つとは異なり最高です、 screen
を使用すると、リモートサーバーから切断し、すべてを実行したままにして、後で再接続して何が起こっているのかを確認できます。 nohup
および disown
を使用すると、対話を再開できません。
他のヒント
画面!パンをスライスして以来の最高のものです。 (ええ、私は他の人がすでにそれを提案していることを知っていますが、それは全世界が参加してそれを提案するのはとても良いことです。)
screenは、ummmm ...のようなものです。VNCなどを使用してGUIのストップに接続しますが、コマンドシェルウィンドウ用です。複数のシェル「ウィンドウ」を使用できます。同じ画面セッションで一度に開きます。次のようなことができます:
- " screen -dR"を使用して画面セッションを開始します。 (-dRの使用に慣れる)
- 1つのウィンドウでいくつかのコマンドを実行
- CTRL - A 、 C を押して新しいウィンドウを作成し、vimでファイルを開きます
- CTRL - A 、 0 を押して最初のウィンドウに戻り、編集したファイルに対してコマンドを発行します
- CTRL - A 、 1 でvimセッションに戻ります
- CTRL - A 、 C でさらに別のウィンドウを開き、「sudo-su」を実行します。 (たまたま完全なルートシェルが必要なため)
- CTRL - A 、 0 、バックグラウンドプロセスの開始
- CTRL - A 、 C を使用して、新しいウィンドウ「tail -f」を作成します。そのバックグラウンドプロセスのログ
- CTRL - A 、 d で画面を切断してから、 CTRL - D サーバーから切断するには
- 3週間休暇を取ります
- サーバーに再度ログオンし、" screen -dR"を発行します。既存のスクリーンセッションに接続する
- 4番目のウィンドウで、 CTRL - A 、 3 を使用してログを確認します時間)
- CTRL - A 、 1 でそのvimセッションを再度取得します
- 今、あなたは写真を撮り始めていると思いますか? =)
魔法のようなものです。私は覚えているよりも長い間スクリーンを使用してきましたが、それがどれほど血まみれであるかにまだ完全に驚いています。
編集: tmux も追加されました。 画面に非常に似ていますが、いくつかの独自の機能があり、ウィンドウが最も目立つものに分割されます。
GNU画面を使用してみてください。複数のシェルを一度に開くことができます。そして、実行中のシェルから切断することができます(つまり、Puttyとのセッションを閉じる)と、彼らは彼らのことを続けます。
探しているのは nohup です。
使用方法については、Wikiリンクを参照してください。
画面が最適です。
試してください:
screen -dmS" MyTail" tail -f / var / log / syslog
バックグラウンドでのこの開始コマンド。
表示するにはscreen -rを使用し、セッションを開始するにはscreen -r Mytailを使用します。
より多くのユーザーが同じセッションにアクセスする必要がある場合は、screen -rx MyTailを使用します。両方または複数のユーザーがセッションを共有します。
screen
を使用できない場合(たとえば、SSHセッションがプログラムで駆動されているため)、デーモンを使用して、プログラムをデーモンとして実行します。
私にとってうまくいく方法の1つは、 at
です。
at
はcronのように機能しますが、1回限りのジョブです。今日は、セッションを維持せずに大きなファイルをダウンロードするために使用しました。
例:
$ at 23:55
at> wget http://file.to.download.com/bigfile.iso
at> ^D
at
を一度に(将来)渡すと、プロンプトが表示されます。その時点で実行するコマンドを入力し、ctrl + dを押します。セッションを終了すると、指定した時間にコマンドが実行されます。
ウィキペディアには、 at
に関する詳細情報があります。 。
./command & disown
ssh localhost && ./command && exit