このコマンドを実行できます:
$ play mylist.m3u
そして音楽が流れます。
次に、Ctrl-Zを押してジョブを一時停止し、bg
を発行してバックグラウンドで実行します。
ただし、次にdisown
とexit
を実行すると、play
コマンドがps
に表示されていても、音楽の再生が停止します。
私は音楽が再生され続けることを期待します。
これも面白い
コマンドを実行します
$ play mylist.m3u &
音楽は再生されません再生されません。ジョブはstopped
ステータスとして表示されます。
コマンドを実行することもできます
$ Nohup play mylist.m3u &
そして、音楽は再生されません-ジョブはすぐに停止します。
しかしながら、
$ Nohup play mylist.m3u
音楽は再生されますが、以前のように私はそれを否定することはできません。
これらはすべて関連しているようです。
ほとんどのプログラムは、disown
edまたはNohup
を実行すると正常に動作しますが、SoXでは動作しません。
誰かが理由を知っていますか?
SoXは入力と出力を必要とします...コンソールで「playxxxx」と入力すると、stdinとstdout(&stderr)がすべて接続された状態で、通常どおり実行されます。
ジョブをバックグラウンドで実行すると(&を使用)、ジョブが開始され、stdinとstdoutへのアクセスを待機しているため一時停止されます。
あなたが仕事を「Nohup」したときにも同じことが起こります。キーボード入力が必要な場合は、「ブロック」され、stdinへのアクセスを受信するまでシステムによって一時停止されます。
プロセスの所有権を剥奪すると、プロセスを開始したコンソールに接続されていたstdinおよびstdoutからプロセスが効果的に切り離されます。
まだ「実行中」ですが、stdinとstdoutへのアクセスを待機しているため、システムによってブロック(一時停止)されます。
私のように、両方ともこの問題を抱えていて、最終的に野球*ではない何かをグーグルで検索し、実際の解決策を求めている珍しい人のために:
$ play whatever.wav &>/dev/null </dev/null &
それは停止することなくバックグラウンドで実行されます。
*ボストンの赤Soxplay野球、そして明らかに一部のプレーヤーはbackgroundよりも脚光を浴びることを好みます。不平を言う。
-qオプションを使用して、/ dev/nullにリダイレクトせずに、SoXがstd-whateverに書き込まないようにすることもできます。
$ play filename -q &