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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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

解決済

1回答

1065閲覧

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

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カーネル上に構築されています。

0グッド

0クリップ

投稿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)

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/05/17 07:09

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

回答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

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Sato321746

2022/05/18 02:37

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問