別の画面でbashスクリプトを実行したいです。スクリプトはプログラムを複数回呼び出し、毎回長い時間待ちます。最初に考えたのは、単に画面を開いてスクリプトを呼び出すことでしたが、ctrl-a d
スクリプトの実行中は分離(通過)できないようです。それで、ちょっと調べて、こんなことを見つけました。ガイドラインShebangを次に変更します。
#!/usr/bin/screen -d -m -S screenName /bin/bash
ただし、これも機能しません(オプションは認識されません)。どんな提案がありますか?
PS:これは私の目的に合うかもしれないと思いますがscreen -dmS name ./script.sh
、これをスクリプトに統合する方法はまだ疑問です。ありがとうございます。
答え1
これシェルボーン表示される行は一部のUNIXバリアントでは機能しますが、Linuxでは機能しない可能性があります。 Linux shebangは限られています。選択は1つだけです。完全な文字列は、別の単語ではなく-d -m -S screenName /bin/bash
単一のオプションとして渡されます。screen
複数のファイルや参照を処理するのではなく、screen内でスクリプトを実行したい場合は、そのスクリプトをscreen内でまだ実行していない場合は、screenを呼び出すシェルスクリプトにすることができます。
#!/bin/sh
if [ -z "$STY" ]; then exec screen -dm -S screenName /bin/bash "$0"; fi
do_stuff
more_stuff
答え2
画面のマニュアルページによると:
screen -d -m
分離モードの実行画面です。これにより、新しいセッションが作成されますが、接続されません。これはシステム起動スクリプトに役立ちます。-S sessionname
新しいセッションの名前をsessionnameに設定します。
したがって、提供したコマンドを実行すると、次のようになります。screen -dmS name ./script.sh
Screenはnameというウィンドウを起動し、自動的にscript.shを実行します。戻って状態を確認するには、次のように入力します。screen -r test
Ubuntu 14.04では、コマンドが少し異なります。努力する:
screen -d -m -S test
スクリプトを実行するには、構成ファイルに移動する必要があります。
sudo vim /etc/screenrc
そこに到達したら、一番下までスクロールすると、次のようになります。
# Example of automatically running some programs in windows on screen startup.
#
# The following will open top in the first window, an ssh session to monkey
# in the next window, and then open mutt and tail in windows 8 and 9
# respectively.
#
# screen top
# screen -t monkey ssh monkey
# screen -t mail 8 mutt
# screen -t daemon 9 tail -f /var/log/daemon.log
このセクションでは、実行するスクリプトの名前を追加する必要があります。これにより、画面上で必要なすべての操作を実行できます。
答え3
少し古い内容ですが、私が見つけることができる少数のスレッドの1つです。 Ubuntu 14で分離モードで実行する唯一の方法は次のとおりです。
screen -d -m -t nameofwindow sh nameoflaunch.sh
リリースは、現在のjavaコマンドとサーバーのバージョンを含む上記の2番目の部分です。私はバニラを取引します。