オープン端末でスケジュールされたコマンドを実行する

オープン端末でスケジュールされたコマンドを実行する

cronまたは、(AFAIK)を使用してスケジュールされたジョブ/スクリプトをat実行することはできません。~へ特定の端末:(リダイレクトを介して)ジョブ/スクリプトの出力を特定の端末にのみ印刷できます。

代わりに、すでに開いている端末でコマンドを入力してから、を押すようにコマンドを実行するようにスケジュールしたいと思いますEnter

これは可能ですか?


私はUbuntu 22.04を実行していますが、解決策がある場合は、特定のLinuxバージョンに依存していないことを願っています。


詳細:ログインまたは端末を開いた状態で、ttyファイルの現在の内容を印刷するスクリプトを実行できます。したがって、端末は常に使用可能であると仮定する。

ジョブは、私がやっていることを無視して実行され、カーソルがあるところに出力を印刷する必要があります(私が視覚化しているものと重なってもかまいません)。ユーザーから任意の入力を受け取る必要はありません。テキスト出力のみです。

ベストアンサー1

ここで提供されている答えの1つを使用できます。特定の時間/日付までの睡眠。ここに既存の質問に投稿されたソリューションを複製する理由はありません。

SEウェブサイトに投稿された質問を参照することもできます。次回特定の時間まで睡眠

したがって、背景にあるのか前景にあるのか、2つのオプションがあります。

展望:

[birdie@localhost tmp]$ cat > test.sh
echo 123
[birdie@localhost tmp]$ chmod +x test.sh 
[birdie@localhost tmp]$ ( sleep 10; ./test.sh ) &
[1] 3689760
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 
[birdie@localhost tmp]$ 123

[1]+  Done                    ( sleep 10; ./test.sh )

少し醜いが動作します。コンソールから何でも読みたい場合は、入力がないため一時停止します。

安全のため、stty -tostopこれらのコマンドを実行する前に実行してください。これは説明するなぜ必要ですか?

または背景:

nohup bash -c "sleep_command; command" &

特定のsleepコマンドが複数行ある場合は、それを使用してスクリプトまたは関数を作成できます。nohupそれ以外の場合は、プログラムが出力を試みるとすぐに一時停止するため、必要です。

おすすめ記事