35

Putty を使用してリモート サーバーに接続しています。私が知りたいのは、コマンドを記述して、Putty とのセッションを閉じた後もコマンドを実行し続ける方法があるかどうかです。その理由は、コンピュータを常にオンにしたままにしたくないからです。これを行う方法はありますか?

ソリューションで更新する

私の質問については、追加のソフトウェアをインストールする必要がないため、 nohupなどの提供されているコマンドのいずれかを使用するのが最善の解決策です。しかし、同じ問題の使用画面にいる場合は、インストールして使用してください。すごいです。

コマンドとスクリーンを使用していくつかのソリューションを提案するため、ノーマン・ラムジーの回答をお気に入りとして選択しました。ただし、他の回答、特にPEZの回答を確認してください。そうすれば、画面でできることの洞察が得られます。

4

9 に答える 9

86

画面!食パン以来最高です。(ええ、他の人がすでに提案していることは知っていますが、全世界が参加して提案するのはとても良いことです。)

画面は、うーん... VNCなどを使用してGUIデストップに接続するのと同じですが、コマンドシェルウィンドウ用です。同じ画面セッションで、一度に複数のシェル「ウィンドウ」を開くことができます。次のようなことができます:

  1. 「screen -dR」を使用して screens セッションを開始します (-dR の使用に慣れてください)。
    • 1 つのウィンドウでいくつかのコマンドを実行する
    • CTRL-Aを押しCて、新しいウィンドウを作成し、そこにあるファイルをvimで開きます
    • CTRL-Aを押し0て最初のウィンドウに戻り、編集したばかりのファイルに対してコマンドを発行します
    • CTRL- A1vim セッションに戻ります
    • CTRL- ACさらに別のウィンドウで、おそらく「sudo - su」を実行します(たまたま完全なルートシェルが必要なため)
    • CTRL- A0バックグラウンド プロセスを開始する
    • CTRL- ACさらに新しいウィンドウを作成するには、「tail -f」そのバックグラウンド プロセスのログ
    • CTRL- Ad画面を切断してからCTRL-Dサーバーから切断する
    • 3週間休暇に行く
    • サーバーに再度ログオンし、「screen -dR」を発行して、既存の screen セッションに接続します。
    • 4 番目のウィンドウでCTRL- A,を使用してログを確認します3(常にそこにいて、ログを監視しているようです)
    • CTRL- A1そのvimセッションを再度取得する
    • 私はあなたが今絵を理解し始めていると思いますか?=)

それは魔法のようです。私は覚えているよりも長い間スクリーンを使用してきましたが、その素晴らしさに今でも完全に驚いています.

編集: tmuxもあることに言及したいだけです。screenと非常によく似ていますが、いくつかのユニークな機能があり、最も目立つウィンドウを分割します。

于 2009-01-10T19:20:09.323 に答える
30

nohupdisown、およびscreenはすべて優れていますscreenが、他の 2 つとは異なり、screenリモート サーバーから切断し、すべてを実行したままにし、後で再接続して何が起こっているかを確認できるため、これが最適です。とのやり取りnohupdisown再開することはできません。

于 2009-01-10T18:58:57.277 に答える
10

GNU Screenを使用してみてください。一度に複数のシェルを開くことができます。そして、これらの実行中のシェルから切断することができ (つまり、Putty とのセッションを閉じます)、シェルは引き続き機能します。

于 2009-01-10T18:48:49.967 に答える
9

あなたが探しているのはnohupです。

使い方はウィキリンクを参照してください。

于 2009-01-10T18:48:08.813 に答える
5

screen最高です。

試す:

screen -dmS "MyTail" tail -f /var/log/syslog 

この開始コマンドはバックグラウンドで実行されます。

screen -rリストに使用するか、 screen -rMytail を使用してセッションに入ります。

複数のユーザーが同じセッションにアクセスする必要がある場合は、screen -rx MyTail を使用して、両方または複数のユーザーがセッションを共有します。

于 2009-01-11T04:40:35.137 に答える
4

使用できない場合screen(たとえば、SSH セッションがプログラムによって駆動されているため)、daemonizeを使用してプログラムをデーモンとして実行することもできます。

于 2009-01-10T19:13:47.857 に答える
3

私にとってうまくいく1つの方法はat.

atcron のように機能しますが、1 回限りのジョブです。今日は、セッションを維持することなく大きなファイルをダウンロードするために使用しました。

例えば:

$ at 23:55
at> wget http://file.to.download.com/bigfile.iso
at> ^D  

at(未来の) 時間を渡すと、プロンプトが表示されます。その時点で実行したいコマンドを入力し、ctrl+d を押します。セッションを終了すると、指定した時間にコマンドが実行されます。

ウィキペディアには に関する詳細情報がありatます。

于 2009-11-13T05:51:38.643 に答える
1
./command & disown
于 2009-01-10T18:54:47.877 に答える