画面からスクリプトを実行する

画面からスクリプトを実行する

別の画面で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番目の部分です。私はバニラを取引します。

関連情報