rc.localからの起動時にスクリーンセッションを実行する


9

起動時にrc.localの特定のユーザーの下で切り離された画面を実行しようとしています。以下のコードは私が今まで持っているものですが、私にとってはうまくいきません。suの部分がエラーを出しているようです。

su - username -c /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'

回答:


13

両方の-cパラメーター(subash)は、少なくとも引用符で囲む必要があると思います。

su - username -c "/usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'"

また-、最後であることが予想され、ここでは望ましくない場合があります(を参照man su)。


さらにいくつかの発言。sudo 可能性が必ずしもあなたのようなワンショットコマンドのためのより良い選択である、しかし:

sudo -iu username /usr/bin/screen -dmS test bash -c '/var/www/path/to/script/script.sh; exec bash'

特に、を使用すると、1つ少ないレベルの引用を使用できますsudo

注意すべきもう1つのことは、特権コンテキストで絶対パスなしでコマンドを実行することです。これはsu(またはsudo)にも当てはまりbashますが、コマンドのへのパスにも当てはまります。あなたはそれを正しくやっていますscreen

以下をテストしただけでうまくいきます。私-はあなたの元の行の主な問題だと思います:

/bin/su username -c "/usr/bin/screen -dmS test bash -c '/home/username/test.sh; exec bash'"

悪の発言:なぜあなたは与えていないtmux試して?私は最近切り替えて、振り返ることはありません。私はすぐに変更するために必要な唯一のものは、プレフィックスキーの組み合わせたものでtmuxデフォルトCtrl+ B- GNUに戻っscreenさんCtrl+ A

これにより、ウィンドウをほぼ任意の数のペインに(垂直および水平に)分割することができ、その構成ファイル形式(ステータスパーの形式を含む)は、実際には人間が理解できます。もちろん、もともとデーモンとして書かれていないプログラム/スクリプトをバックグラウンドで実行したいだけの場合tmuxと同じscreenです。ただし、ターミナルマルチプレクサとやり取りする場合は、を強くお勧めしtmuxます。


少し試してみます。私が実行しているスクリプトは絶対パスを使用しているので、推奨しますsusudo
ATLChris 2013

1
sudoすでにrootであるrc.localから実行する場合は、ログインシェルを見逃すため、これは適切な選択ではありません。サイドノートでは、見てい/etc/init/tty1.confここでは、画面に[A]のgettyを交換します- 。
Aquaquad 2013

@aquaherd:それは私が書いときに念頭に置いていたものですが、必ずしもそうではありません。手掛かりは、本当に、いつものことsudo su -です... sudo(スーパーユーザーは行う)、su(ユーザーを切り替える)... .confについての良い考え
0xC0000022L

1
私は言わなければならない、あなたの邪悪な発言のために私はこの投稿を+1している。大好きです!強制的に新しいセッションを開始させることができるので、screenの代わりとして最適です。
量子物理学者

@aquaherd sudoは、を使用してログインシェルを正常に起動できます-i
muru


1

これが私が使用したものであり、これが最もクリーンで最も単純であることがわかりました(自分で作業したことがテストされています)。

「user」を実行するユーザーに置き換えます。"nameyouchoose"をスクリーンセッションの名前に置き換えます "/script/start.bash"をスクリプトのパスに置き換えます。

/usr/bin/sudo -u user /usr/bin/screen -dmS nameyouchoose /script/start.bash

出典:http : //realtechtalk.com/How_to_start_screen_in_bash_script_or_from_etcrclocal_on_startup_as_a_specific_user-1980-articles

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.