アプリ版:「スタンプのみでお礼する」機能のリリースについて

"crontab -e"コマンドで、システム起動時に実行される@reboot行に記述したdateコマンドが実行されません。
下記状況ですが、どこが間違っているのでしょうか?
(この現象の仕組みを知りたいので「systemctlを使いなさい」というのは御勘弁下さい)

環境 : xubuntu 20.04

(dateコマンドのパス確認)
$ which date
/usr/bin/date

(crontabでの設定)
$ crontab -l
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOME=/home/taro
# m h dom mon dow command
@reboot touch ${HOME}/tmp/tmpfile
@reboot Date=`/usr/bin/date +%y%m%d%H%M`; touch ${HOME}/tmp/"${Date}"tmpfile
@reboot Str='hoge'; touch ${HOME}/tmp/"${Str}"tmpfile

(crontabで書いたdateコマンド利用コマンドを端末で実行して動作を確認)
$ Date=`/usr/bin/date +%y%m%d%H%M`; touch ${HOME}/tmp/"${Date}"tmpfile
$ ls ${HOME}/tmp/
2306111600tmpfile

(crontabの@reboot行を実行)
# reboot

(システム再起動後の確認。dateコマンドでのファイルが作成されていない)
$ ls ${HOME}/tmp/
hogetmpfile tmpfile

A 回答 (2件)

crontab ファイルのコマンド部分の単独の % は改行文字に置換され、コマンドの標準入力になります。


%という文字として使いたい場合は \% です。


例:
* * * * * cat >/tmp/1 %1%2%3

⇒ /tmp/1 に3行書き込まれる

* * * * * mail -s TEST foo@example.com%メール本文1行目%2行目

⇒ メールが送られる
    • good
    • 0
この回答へのお礼

ありがとうございます。
"@reboot Date=`/usr/bin/date +\%y\%m\%d\%H\%M`; touch ${HOME}/tmp/"${Date}"tmpfile" と記述して動作しました。

下記ページに解説を見つけました。
https://zenn.dev/yoichi/articles/understanding-c …

お礼日時:2023/06/12 06:49

エスケープが要るのでは?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!