• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:シェルの中で現在の時間の2分後にコマンドを設定したい。)

シェルで現在の時間の2分後にコマンドを設定する方法

このQ&Aのポイント
  • シェルの中で現在の時間の2分後にコマンドを設定する方法をご紹介します。時間指定でコマンドを実行するためには「at」コマンドを使用しますが、2分後の時間を取得する方法がわからない場合があります。しかし、「date」コマンドを使って現在の時間を取得し、その時間に2分を加えることで簡単に2分後の時間を求めることができます。
  • 具体的な手順は以下の通りです。まず、「date +%T」コマンドを使用して現在の時間を取得します。このコマンドを実行すると、時:分:秒の形式で現在の時間が表示されます。次に、取得した時間のうち分の部分を取り出し、整数として扱います。その後、「expr」コマンドを使用して取り出した分に2を加えます。最後に、得られた2分後の分を「date」コマンドで時:分の形式に変換し、それを「at」コマンドでコマンド実行の時間として設定します。
  • 上記の手順により、シェルの中で現在の時間の2分後にコマンドを設定することができます。また、他の方法として、「date -v+2M」コマンドを使用する方法もありますが、オプションが正しくないとエラーが発生する可能性があるため注意が必要です。いずれの方法を選んでも、必要なハッシュタグを読み込んで実行することで、問題なくコマンドを設定することができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

date --date '2 minutes' ではどうです?

tetuya120
質問者

お礼

回答ありがとう御座います。 --date というオプションは存在しないようです。。。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

dateにも、POSIX準拠のものや、 Linux等で採用されているGNUのものとかがあって、機能が一部違います。 GNUは任意の日時を指定できるのですが、POSIXのものは現在時刻しか表示できません。 そのUsageから、POSIX版のようです。 単に2分後だったら、わざわざatを使わずに、sleepで待って実行する方がよいのではないでしょうか。

tetuya120
質問者

お礼

回答ありがとう御座います。 一つのコマンドではなく、複数のコマンドを「同時刻」に実行したかったため、 atコマンドで同じ時間に設定を行いたかったのです。 色々調べた所下記を実行する事で出来ました。 at -f /tmp/test.sh now + 1minute 皆様ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • localica
  • ベストアンサー率52% (202/385)
回答No.2

2分後ていどならsleepでは? sleep 120 echo "ls"

tetuya120
質問者

お礼

回答ありがとう御座います。 確かに、2分後に実行すればという話だとsleepでよいかと思います。 しかし、今回の場合、あるテストのためX分後に大量のコマンドを一斉に実行したいのです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Cシェルにあるコマンドの代わり

    UNIX端末でCシェルのプログラムがあるのですが、今後UNIX端末を 廃棄して、WindowsのPCだけにするようなので、プログラムが使えなくなるのが困ります。 いくつかはVB2005でdosコマンドを使って作り直したのですが、今作ろうとしている物の中の コマンドで調べても解らないのがありました。 echo(echo $a > sssやecho 'abc def' >> sss) cat(set x = 'cat rrr') paste(paste fff ggg > hhh) などのコマンドと、あとawkがありました。 よろしくお願いします。

  • シェルやコマンドを一定時間で終了させる方法ってありますか。

    こんばんは。 シェルやコマンドで例えば「ls」や「sleep」なんかは実行後には勝手に終わってくれますが、「top」等は止めるコマンドを入力しないかぎり終わりません。 このような特性を持っているコマンド、及びシェルを一定時間で終了するようにするには一体どうやればいいでしょうか。 シェルを作る際にどうしても自動で終わらないコマンドを入れたいのですが、それを入れるとその行以降のコマンドが実行されず、シェルが止まってしまって困っています。 環境はCentosです。どんな意見でもいいので教えて頂けたら幸いです。どうぞよろしくお願いします。

  • Bシェルのawkコマンドについて

    Bシェルのawkコマンドについてですが、例えばプロンプトから % ls -l hoge.txt | awk '{print $5}' と入力すると、hoge.txtのファイルサイズが出力されますが、同様のことをBシェルの中で行おうと思っています。 下記のように、配列arrayにはスペース区切りで3つのデータが入っており、N番目のデータを取得したいという場合に、Nに変数を使用して取得する方法がわかりません。 #!/bin/sh array="AA BB CC" num=3 # CCを取得したい echo $array | awk '{print $num}' 上記で実行すると、"AA BB CC"のようにすべて出力されてしまいます。awkで出力する箇所を${数値}で指定すればうまくいくのですが、ランダムで決めた数値(1~3)をnumに入れて取得したい場合、このようなことは可能でしょうか。 もし不可能な場合でも、awk以外に何かコマンドがあればご教授願います。なお、作成するのはBシェルになります。

  • Linuxシェルスクリプトを新しいコマンドにしたい

    Linux初級者です。よろしくお願いします。 OSにFedora Core 10, シェルにtcshを使用しています。 よく使用するコマンドを、まとめて一括で実行するように、 新しいコマンドを作成したくて、次のようなことをしていたのですが (1)ホームディレクトリにmybinというディレクトリを作成してPATHを通す。 (2)newbin1という以下の内容のシェルスクリプトを作成して、~/mybinに置いておく。 ================================== #!/bin/tcsh -f date #実行コマンド例1 echo $PATH #実行コマンド例2 ================================== (3)chmodコマンドでファイルに実行権限を与える。 上記のような方法で、作成したシェルスクリプト(newbin1)を PATHの通ったディレクトリ(~/mybin)に置いて、 > newbin1 とコマンドを呼び出しても、 "newbin1: コマンドが見つかりません" というエラーになってしまいます。 > which newbin1 とすると、ちゃんとファイルのパスが表示されるのですが、 *********************************************************** 自分で作成したシェルスクリプト(newbin1)を、 新しいコマンドとして認識させるにはどのようにすればよいのでしょうか。 また、そもそもシェルスクリプトを新しいコマンドにすることが 不可能だったりするんでしょうか? ************************************************************ 一括で実行したいコマンドが多い場合に、aliasで割り当てるのが大変なので、 できればaliasコマンドは使わずにできる方法を探しています。 基本的な質問かもしれませんが、よろしくお願い致します。

  • linuxに一定時間待つコマンドはあるでしょうか?

    あるコマンドを実行後 5秒とか10秒待って 次のコマンドを実行する ということをシェルスクリプトでやろうと思っていますが 現在の時間を繰り返しdateコマンドで取得して 現在の時間が最初に取得した時間より5秒経過していたら 次のコマンドを実行するといった面倒なことはしたくないので 一定時間経過させるウェイティングコマンドを探しています よろしくお願いします

  • バッチファイル 時間変数 短縮化

    バッチファイル 時間変数 短縮化 お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- set BAT_FILE=TIME.bat set LOG_DIR=D:\test set LOG_FILE=LOG.txt set LOG_FILENAME=%LOG_DIR%\%LOG_FILE% set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第一処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% 処理A(プログラムは省略) set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第一処理終了時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第二処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% 処理B(プログラムは省略) set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% echo %BAT_FILE% 処理日 = %yyyy%%yy%/%mm%/%dd% 第二処理終了時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME% echo. >> %LOG_FILENAME% コード-------------------------------------------------------------------------------- 上記プログラム内の処理A及び、処理Bは比較的長い処理である為、その前後の処理時間帯を上記のように時間変数で取ってログに出力されています。 しかし、上記のように最新の処理時間帯をわざわざ何行もある各時間変数を宣言して取得するのはプログラム的に長くなってしまい、かつ醜いです。 上記方法以外に時間変数のスッキリとした取得方法は無いのでしょうか? ご存知の方がいれば、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • バッチファイルにおけるコマンドの引数

    バッチファイルの中で曜日判定で処理内容を変えたいのですが DOSコマンドのdateでは曜日を出力できませんでした。 そこで、Services for UNIX 3.5をインストールし、UNIXのdateコマンドを使って曜日判定をしようとしたのですが、以下のようにエラーに なってしまいます。 ===バッチの中身== rem 曜日判定 set wk=c:\SFU\bin\date +%a IF %wk% EQU "日” call batch_1.bat  ・・・ ・・・ ====== 上記をコマンドプロンプトで実行しますと date: illegal time format usage: date [-u] [-r seconds] [+format] date [-u] -t [[[[[CC]yy]mm]dd]HH]MM[.SS] [+format] date [-u] [+format] mmddHHMM[yy] +aの使い方が誤っています。 ※ちなみコマンド単体で実行すると正常です。 c:\SFU\bin\date +%a 水

  • バッチファイル 2つのログに出力 短縮版

    お世話になっております。 WindowsXP環境にて下記のバッチファイルがあります。 コード-------------------------------------------------------------------------------- rem === 変数設定 =============================================================== rem --- 時間変数 --- set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% rem --- フォルダ変数 --- set LOG_DIR1=D:\test rem --- ファイル変数 --- set LOG_FILE1=LOG.txt set LOG_FILE2=LOG_ALL.txt set LOG_FILENAME1=%LOG_DIR1%\%LOG_FILE1% set LOG_FILENAME2=%LOG_DIR1%\%LOG_FILE2% set BAT_FILE1=test.bat rem コマンド拡張機能有効化 setlocal ENABLEEXTENSIONS rem === 変数設定 =============================================================== REM <開始処理>=============== call :TIME echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% rem 現在の日付/時間を取得 :TIME set yyyy=%date:~-10,2% set yy=%date:~-8,2% set mm=%date:~-5,2% set dd=%date:~-2,2% set HH=%TIME:~0,2% set MM2=%TIME:~3,2% set SS=%TIME:~6,2% exit /b コード-------------------------------------------------------------------------------- 上記プログラムは日付を2つのログに出力していますが、 echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME1% echo. >> %LOG_FILENAME1% echo %BAT_FILE1% 処理日 = %yyyy%%yy%/%mm%/%dd% 処理開始時間= %HH%:%MM2%:%SS%>> %LOG_FILENAME2% echo. >> %LOG_FILENAME2% と二重になっている無駄なコードとなり、見栄えが良くないです。 これを1つのコードで2つのログファイルに出力可能な短縮プログラムは可能でしょうか? ご存知の方がいましたら、ご教授願いますでしょうか? 何卒宜しくお願い致します。

  • linuxコマンド(時間の抽出について)

    ログに時間が記載されています。 現在時刻から5分以内のものをgrep等のコマンドを利用し抽出することは可能でしょうか? (シェルを利用する形になりますか?) よろしくお願いします。 例:secure_log May 30 20:41:14 linux sshd[26963]: Received disconnect from 10.0.0.1: 2: disconnected by server request May 30 20:51:40 linux sshd[27001]: Accepted password for linux from 10.0.0.1 port 3579 ssh2 May 30 20:53:42 linux sshd[27003]: Received disconnect from 10.0.0.1: 2: disconnected by server request May 31 08:39:10 linux sshd[27501]: Accepted password for linux from 10.32.27.98 port 1099 ss h2

  • 時刻合わせについて

    AIX、Solarisなどのいんちき管理者をしていますが AIXでの「時刻合わせ」の方法について悩んでおります。 dateコマンドにて設定しようとしていますが、微調整が効かず 困っております。 Solarisでは date -a [sss] というコマンド形式で sss秒分ゆっくりと時間を合わせる、ということが出来るのですが AIXでは知る限り指定した時間ぴったりに時計が合ってしまうため、 時間に大きなずれのあるサーバーの時計を設定するのが非常に恐怖です。 特に時間の進んでいるサーバーの時計を戻すなんてあたりが怖いです。 なにかよい知恵は無いでしょうか。