![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
操作ミスでcronの設定が削除されてしまいました。
crontabの貧弱なフールプルーフについて訴えたい事も少々ありますが、ひとまず置いておきます。
少し調べたのですが、復元は無理っぽいということで、一から作り直すことにしました。
cronの設定をしたのは、だいぶ前なのでほとんど忘れています。
まずパスの設定をすべくcrontabの先頭で、
PATH=/home/webmaster/bin:$PATH
* * * * * echo $PATH >tmp
としたところ、
$ cat tmp
/home/webmaster/bin:$PATH
のように$PATHが展開されずに、そのまま文字列として設定されていました。
crontabで$PATHにディレクトリを追加するには、どうすればよいのでしょうか。
No.1ベストアンサー
- 回答日時:
cron によっては
できない
かもしれないらしい. あなたの使っている cron でできるかどうかはわからないので, まずはマニュアルを読んでみてはどうだろうか.
「フールプルーフ」は... ある意味「UNIX の精神」に反するかもしれん....
cronによってはできないのですね。。。
たぶん私のcronはできないのでしょう。。。
しかたないので$PATHの内容を調べて手打ちすることにしました。
PATH=/home/webmaster/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ダサいですね。どんなもんでしょう。。。
そうですねUNIXの精神に賛同して使ってきたのですもんね。
あの時もっと慎重になっていれば回避できてましたから。
だけどむかつきます
No.3
- 回答日時:
私はご質問者様の意図をよく理解していないかも知れないのですが、実験をしてみました。
尚、私のデフォルトシェルはcshですのでご注意下さい。
●crontabsファイルに次の1行を追加する。
# 毎分起動。
* * * * * /hoge/hoge/MyShell
●MyShellは次の2行です。
#!/bin/csh
echo $path >> /tmp/tmp
●さらに$HOME/.cshrcファイルのpath変数の設定を、次の1行に書き換えました。
| | |
| | |
set path=/tmp/MyPath
| | |
| | |
こうしてcronを再起動すると、/tmp/tmpファイルは次のようになります。
/tmp/MyPath
/tmp/MyPath
/tmp/MyPath
/tmp/MyPath
| | |
私が言いたいことは、cronからご質問者が自ら製作したスクリプトを呼び出すようにすれば、$PATH変数に限らず、シェルの環境を如何様にも変更できるはず。
1.デフォルトではパスが通っていない実行ファイルや、スクリプトを起動したいのなら、cronが呼び出すスクリプト(MyShell)の中でフルパスで指定すれば良い。
2.単にアカウントのデフォルトパスを利用したいのなら、この例で示したようにMyShellのシェバン(この例では"#!/bin/csh")の設定で、$HOME/.cshrcの設定を引き継げば良い。
ちょっと、やろうと思いましたが、すぐ挫折しました。
やりたい事は、2.単にアカウントのデフォルトパスを利用したいだけです。
当方bashすら使いこなせてないので、cshは意味不明です。
.bashrcなるものを開くのも初かもしれません。
.bashrcに$PATHを設定する記述は見当たりませんでした。
bashでは、
PATH=/home/webmaster/bin:$PATH
のようにして$PATHを設定します。
いけてないですが、No.1さんに回答を頂いた段階でcrontab -eで$PATHをリテラル値で設定して、今のところ正常に動いているようです^^
ですので本件の緊急性はなくなりましたが、cronで簡単にアカウントのデフォルトパスを利用する方法(bashで)を引き続き募集させていただきます。
遅ればせながら私のシステムは#99-Ubuntuというものらしいです。
$ uname -v
#99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021
No.2
- 回答日時:
cron実行全体にかかるパス設定になるので、下手を打つと他のcron実行対象を誤動作させる恐れがあります。
各cron行で、環境変数を明示するか、envコマンドやシェルスクリプトでラッピングするほうが安全かと。
環境変数を明示するとは、PATHを含む全ての環境変数を設定するということでしょうか。
例えば、どのように書きますか?
また各cron行で明示するとは、例えばcrawl、bakの2つを実行するには、
PATH=/home/webmaster/bin:/hogehoge
0 0 * * * crawl
PATH=/home/webmaster/bin:/hogehoge
0 1 * * * bak
のように$PATHの設定も2回するということでしょうか。
これはcrontabの先頭で1回だけ$PATHを設定する場合と、どのような挙動の違いが考えられますか。
またenvコマンドやシェルスクリプトでラッピングするというのは分かりません。
例えばcrawl、bakの2つを実行したい場合には、crontab -eでどのように書くのですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Windows 10 pathが通らない 2 2023/03/27 11:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/10/26 17:14
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- Mac OS PATHを使ってcdなどで簡単に移動できるようになりたい 3 2023/05/13 14:22
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- オープンソース Coinmarketcap api 1 2022/05/30 15:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
.forward でphpに渡し、自動返...
-
Macでrtf書類を開くアプリケー...
-
白紙のMP3ファイル
-
Linuxを入れたばかりなのにタイ...
-
windows11でandroidのAPKファイ...
-
webminでユーザーを作成すると...
-
ウインドウズの「全般」はMacで...
-
VLC media playerを常にデフォ...
-
いきなり「言語解析ライブラリ...
-
ldapのコンフィグファイルslapd...
-
iptablesの[カッコ]の意味を教...
-
開きたいアプリケーションが「...
-
TELNET、FTPでrootを許可したい。
-
FTPで日本語文字の文字化け(特...
-
BCDストアの編集で
-
ゴミ箱へドラッグできません。
-
Apache起動時に秘密鍵パスフレ...
-
DDEを使う/使わない?
-
AUTOEXEC.BATの編集ついて
-
プログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
hosts に 記載がなければ追加...
-
2台のWindowsでユーザー名を同...
-
jpgファイルが開かない
-
chownでファイル所有者なのに別...
-
VLC media playerを常にデフォ...
-
LinuxのOS稼動時間(uptime)を...
-
BINDで独自ドメインの名前解決...
-
Macでrtf書類を開くアプリケー...
-
ラズパイのファイルのパーミッ...
-
音楽のファイルを開く時にデフ...
-
Wine 黒い画面
-
Squidの起動エラーについて
-
/etc/inet/hostsの編集の反映に...
-
Fatal server error?
-
コマンドプロンプトの標準テキ...
-
Linuxを入れたばかりなのにタイ...
-
ドラック&ドロップ出来ない時...
-
LANG="ja_JP.UTF-8"設定がサー...
-
ward(mac)の<標準>ツールバー...
-
iptablesの[カッコ]の意味を教...
おすすめ情報