与えられた日時まで寝る方法は?

与えられた日時まで寝る方法は?

次のように、日付(日時分)が指定されたシェルを作成したいと思います。

10:00 AM Sun
2:30 PM Mon
...

正確な日付と時刻までスリープモードのままです。 1つの方法は、現在の日付を取得して差を計算できることです。それから秒に変換し、その時間の間寝ます。

しかし、シェルスクリプトを使用してこれを行う方法がわかりません。

#!/bin/bash

now=$(date '+%A %W %Y %X')
date =  2:30 PM Mon

difference = ??
sleep difference

ベストアンサー1

ユーザーがコマンドを使用できる場合、atこれは完全な使用です。

$ at 08:00 022116
at> myscript.sh
at>      <----------- ctrl-d here
job 9 at 2016-02-21 08:00

at「ユーザーは実行できません」というメッセージが表示された場合は、syadminにこのユーザーが環境でどのように使用されるかに応じて、このユーザーをファイルに追加するか、at.allowファイルから削除するように依頼してください。at.deny

もちろん、スクリプトを書く途中で今日の長い睡眠をしたくない場合は例外です。それでも、スクリプトを2つの部分に分割して保持したい変数をファイルに書き込んでから、時間が経過してスクリプトの2番目の部分が実行されると、保存されたファイルからその変数を読み取ることができます。

おすすめ記事