Guixで指定された将来の時間にワンタイムコマンドを実行するには?

Guixで指定された将来の時間にワンタイムコマンドを実行するには?

将来の特定の時間にGuixでシェルコマンドを実行したいと思います。私の考えは、そのコマンドを使用することでしたが、atGuixでは使用できないようです。

私の願いの命令型の性格はある程度Guixの宣言的哲学に反するので、私の期待を(間接的に)使用することはatできません。

たとえば、atrequireatrunまたはatdis running は Guix の作業方法に合わない場合があります。

特定の時間にコマンドを実行するためにまだ見つかっていないGuixの特定の方法はありますか?

今は1つしかできず、sleep xxx; cmd今はそれだけで十分でしょう。


@GAD3Rが提案した内容に基づいたソリューションは次のとおりですmcronシミュレーション方法のマニュアルat

~/.config/hello.guile:

(job '(next-minute-from (current-time) '(25))
     (lambda () (system "echo $(date) >> ~/hello.txt")
                (kill (getppid) SIGINT)))

次に電話をかけてみてくださいmcron

~/hello.txtこれにより、25分表示に行が追加されます。

を使用するよりも多くの作業が必要ですatが、動作します。

2 つの潜在的な改善を確認できます。

  • job最初の引数としてUnixタイムスタンプを返す関数が必要なようです。したがって、必要な正確なタイムスタンプを提供することは効果があると思います。これにより、キリング部分が重複する可能性があります。

  • mcron手動で呼び出す代わりにマクロン訪問サービス

最後に、私が知って検索した用語でmcron代替図またはatd明示的に言及することは価値があるでしょう。atrun何らかの理由で、cronが私が探しているものを大まかに計算できるはずだとは思わない。おそらくパッチを書くと思います。

答え1

mcronposixまたはguile(scheme)スクリプトを介して使用してから実行する必要がありますmcron &。インストールするか、cronルートとしてインストールしますcrondcrontab

スクリプトはにあります ~/.config/cron

Posixスクリプトには.vixieまたは.vix拡張子が必要です。

.guileGuileスクリプトには、または拡張子が必要です.gle

GNUドキュメント:mcron

関連情報