質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

cronが正常に動作しません。助けてください。

Sato321746
Sato321746

総合スコア1

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

1回答

0グッド

0クリップ

634閲覧

投稿2022/05/17 07:07

cronが正常に動作しません。助けてください。
シェルスクリプトをcronに読み込ませています。
設定時間にそのshが実行されるはずですが、/var/spool/mail/userにメールが届いた旨のメッセージがプロンプトに表示され、shの中身が動いておりません。少しでも引っかかる箇所がありましたらご指摘お願いいたします。

"1^M:曖昧なリダイレクトです。"がキーだと思うのですが、リダイレクトの書き方、cronの書き方、絶対パスの書き方(正しいパスです)、何れも正しいものです。

xは適当なディレクトリ名ですが、階層は正しい構成となっております。
リダイレクトの構文に空白などはありません。

よろしくお願いいたします。

<現在登録されたcrontab>
$ 25 14 * * * sh /x/x/x/hoge.sh > /dev/null 2>&1

<hoge.shの中身>
#!/bin/bash
echo "cron start" >> /x/x/x/x/log.file

<var/spool/mail/userの中身>
以下略
/bin/sh: 1^M: 曖昧なリダイレクトです

</var/log/cronの中身>
May 17 14:24:01 localhost crond[9001]: (user) RELOAD (/xxx/xxx/xxx/user)
May 17 14:25:01 localhost CROND[24711]: (user) CMD (sh /x/x/x/hoge.sh > /dev/null 2>&1^M)

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

melian

2022/05/17 07:09

ログメッセージに表示されている通り、carriage return(0x0d) が入っていることが原因かと思われます。

回答1

0

ベストアンサー

改行がCRLFである環境(Windowsのエディタとか)で作ったファイルをバイナリー転送でLinux環境に持って行って、
crontab そのファイルで登録してしまったのでしょう。

CR(つまり、^M)の文字が行末に付いてしまっています。シェルが改行と認識するのは LF だけです。

案1.ファイルをWindowsで作る習慣をやめる(Linuxで使うファイルはLinux上で作る)
案2.Windowsのエディターでの保存時に改行コードを LF だけにする
案3.Linux環境にコピー後、CR を削除する

あと、

$ 25 14 * * * sh /x/x/x/hoge.sh > /dev/null 2>&1

の先頭の$コピペミスで、実際には無いのですよね?

投稿2022/05/17 08:29

otn

総合スコア81082

下記のような回答は推奨されていません。

  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

Sato321746

2022/05/18 02:37

そのようでした。回答ありがとうございました。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。