システムの起動時に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 and program2」にいくつかの変数を配置した後、スクリプトが機能しなくなります。このようなもの:
#!/bin/bash
screen -S test -d -m $HOME/folder/folder/.program -f config.cfg
何らかの理由で「-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