バックグラウンドでプログラムを起動する方法

バックグラウンドでプログラムを起動する方法

プログラムボブライトバックグラウンドで実行されません。実行間に大きな違いはありません

sudo boblightd

そして

sudo boblightd& 

コンソールが追加の入力をブロックしない問題を解決するには?

pi@raspberrypi ~/boblight/boblightd-for-raspberry-master $ sudo boblightd
Boblightd 2.0 (optimized version for raspberry) (c) 2013 Speedy1985 and Heven)
(InitLog)                       start of log /root/.boblight/boblightd.log
(PrintFlags)                    starting boblightd
(CConfig::LoadConfigFromFile)   opening /etc/boblight.conf
(CConfig::CheckConfig)          checking config lines
(CConfig::CheckConfig)          config lines valid
(CConfig::BuildConfig)          building config
(CConfig::BuildConfig)          built config successfully
(main)                          starting devices
(CClientsHandler::Process)      opening listening TcpSocket on *:19333
(CDevice::Process)              ambilight: starting with output "/dev/spidev0.0"
(CDevice::Process)              ambilight: setting up
(CDevice::Process)              ambilight: setup succeeded


pi@raspberrypi ~/boblight/boblightd-for-raspberry-master $ sudo boblightd&
[1] 2289
pi@raspberrypi ~/boblight/boblightd-for-raspberry-master $
Boblightd 2.0 (optimized version for raspberry) (c) 2013 Speedy1985 and Heven)
(InitLog)                       start of log /root/.boblight/boblightd.log
(PrintFlags)                    starting boblightd
(CConfig::LoadConfigFromFile)   opening /etc/boblight.conf
(CConfig::CheckConfig)          checking config lines
(CConfig::CheckConfig)          config lines valid
(CConfig::BuildConfig)          building config
(CConfig::BuildConfig)          built config successfully
(main)                          starting devices
(CClientsHandler::Process)      opening listening TcpSocket on *:19333
(CDevice::Process)              ambilight: starting with output "/dev/spidev0.0"
(CDevice::Process)              ambilight: setting up
(CDevice::Process)              ambilight: setup succeeded

ベストアンサー1

バックグラウンドコマンドが機能[1] 2289し、実際にバックグラウンドに配置されていることを確認した後。

ただし、コマンドの出力は、リダイレクトしない限り、端末に送信されます。これを行う包括的な方法は次のとおりです。

sudo boblightd >std.txt 2>err.txt &

stdoutとstderrの両方を同じファイルに移動するには、次の手順を実行します。

sudo boblightd >std.txt 2>&1 &

もちろん、1つまたは2つのストリームの出力に興味がない場合は、ファイル/dev/null名の代わりに送信できます。

sudo boblightd >/dev/null 2>err.txt &

(この例では標準出力を破棄しますが、問題が発生した場合に備えてstderrを維持します。)


修正する

上記は、boblightdが何であるかについての無知に基づいています。他の回答でデーモンモードがあることがわかったので、この場合に使用する必要があります。

ところで、上記は、sudoパスワードの入力を求められず、端末ウィンドウを閉じないことを前提としています。前者の場合は個人的にsudo bashthenを使用しますが、もう1つのアプローチはアクセスをキャッシュするために無害なコマンドを実行するboblightd >std.txt 2>err.txt &ことです。sudo ls

後者の場合、nohupこれは建物を出た後も機能し続けることを保証する魔法の命令です。sudo実際のコマンドの後ろと前に来ます。たとえばsudo nohup boblightd >std.txt 2>err.txt &。または、その後sudo bash(ルートシェルをそのままにしてください)。nohup boblightd >std.txt 2>err.txt &exit

おすすめ記事