私は、システム起動時にGNU Screenセッションのプログラムを起動するスクリプトを書く方法を見つけようとしています。 私はこれを試しています:
#!/bin/bash
screen -S test -d -m -X $HOME/folder/folder/.program \
screen -S test2 -d -m -X $HOME/folder/folder/.program2 \
しかし、セッションがすでに切り離されているため、コマンドを実行することができません。 必要なのは、スクリーンセッションでコマンドを実行し、このセッションをすぐに切り離すことだけです。
回答ありがとうございました。スクリプトは、私の "program と program2" のためにいくつかの変数を置いた後に動作しなくなりました。次のようなものです:
#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg
が無視されました。また、引用符で囲むコマンドも試してみましたが、これも役に立ちません。
本当に行末に「`」をつけたのですか?もしそうでないなら、次の文字をエスケープしてしまうので、それを削除してみてください。
また、-X
を落とすことで、例えば私の場合、セットアップがうまくいくようになります:
screen -S test -d -m -X touch /tmp/test
は、No screen session found
で失敗します:
screen -S test -d -m touch /tmp/test
は問題なく動作します。そのようなわけで、以下のようにするとうまくいくのではないかと思います:
#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program
screen -S test2 -d -m $HOME/folder/folder/.program2
ブート時にこれを実行した場合、$HOMEは特定のユーザーとしてログインした後と同じではないことを覚えておいてください。特定のユーザーとして実行する必要がある場合は、そのユーザーとして実行するために su
のようなものを使用する必要がありますし、フルパスを指定することであいまいさを取り除くことができます:
#!/bin/bash
screen -S test -d -m su - username /home/username/folder/folder/.program
screen -S test2 -d -m su - username /home/username/folder/folder/.program2
あるいは、上記のスクリプト全体を su - username /path/to/your/script
として呼び出すことになります。
Cry Havokさんがおっしゃるように、コマンドライン上にプログラムを配置することができます。
どうしても-Xオプションを使いたい場合は、a)'screen'コマンドを指定する必要があり、b)あらかじめセッションが存在する必要があります。
screen -dmS test
screen -S test -X screen $HOME/folder/folder/.program
screen -dmS test2
screen -S test2 -X screen $HOME/folder/folder/.program2