
特定のユーザーでプロセスを実行したい。
RHEL 7 では、次のようにしてこれを行うことができます。
source /etc/rc.d/init.d/functions
daemon --user=myuser $JAVA_HOME/bin/java -cp $appClassPath $MAIN_CLASS
SLES12 で同じ動作を実現するにはどうすればよいですか? は、/etc/rc.d/init.d/functions
SLES12 ではそのままでは利用できません。
答え1
SUSE では LSB start_daemon の使用を推奨しています。(https://en.opensuse.org/openSUSE:パッケージ化_init_scripts) 。
しかし、systemd 時代にそれが継続されるのか、それとも段階的に廃止されるのかはわかりません。
もちろん、systemd システムで推奨される方法は、systemd ユニットを作成することです...
runuser
それ以外の場合は、やsu
、さらには sudo などのデフォルトのツールを使用します。これらは、そのコマンド ラインを実行する権限を持つ任意のユーザーとして呼び出すことができるという利便性があります。
これらのラッパー内でプログラムをバックグラウンドで切り離します (または実行します)。おそらく nohup の助けを借ります。
これはより標準に準拠しており、非推奨の init-system インフラストラクチャに結合されていません。