回答編集履歴

2

曖昧な文言を修正

2016/07/06 06:53

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -148,7 +148,7 @@
148
148
 
149
149
 
150
150
 
151
- cronの設定に、`bash`の実体ファイルをフルパスで追記してください。
151
+ cronの設定に、"./sample.sh" の前に`bash`の実体ファイルをフルパスで追記してください。
152
152
 
153
153
  例えば、以下のような感じです。
154
154
 
@@ -174,6 +174,8 @@
174
174
 
175
175
  これで、シェルが正しく実行されるか、あるいはエラーメッセージがどのように変わるか確認してみてください。
176
176
 
177
+
178
+
177
179
  ---
178
180
 
179
181
  ちなみに、当ご質問とは無関係ですが、 /var/log/syslog に

1

回答を追記

2016/07/06 06:53

投稿

KiyoshiMotoki
KiyoshiMotoki

スコア4791

test CHANGED
@@ -103,3 +103,89 @@
103
103
  そのため、ファイルの末尾に改行がないと、最終行に記述した設定が無視されてしまいます。
104
104
 
105
105
  `crontab -e`で開いたファイルの末尾に1つ、空行を追加して、様子を見てみてください。
106
+
107
+
108
+
109
+ # 2016/07/06 追記
110
+
111
+ 他の回答者様へのコメントに記載したエラーメッセージが
112
+
113
+ > /bin/sh: 1: Syntax error: word unexpected (expecting ")")
114
+
115
+
116
+
117
+ となっていることから、cronで`/bin/sh`を実行すると、`bash`とはべつのシェル(おそらく`dash`?)が起動していると思われます。
118
+
119
+ [https://ja.wikipedia.org/wiki/Debian_Almquist_shell](https://ja.wikipedia.org/wiki/Debian_Almquist_shell)
120
+
121
+
122
+
123
+ 上の予想が正しければ、`bash`を使用して sample.sh を起動するよう、cronに指示してやればうまく動くはずです。
124
+
125
+
126
+
127
+ まず、以下のコマンドを実行してください。
128
+
129
+ ```sh
130
+
131
+ whereis bash
132
+
133
+ ```
134
+
135
+
136
+
137
+ 環境によって異なりますが、以下のようにいくつかのパスが表示されるはずです。
138
+
139
+ ```
140
+
141
+ bash: /bin/bash /usr/share/man/man1/bash.1.gz
142
+
143
+ ```
144
+
145
+ このうち`/bash`で終わるパスが、`bash`コマンドの実体となるファイルです。
146
+
147
+ (上の例の場合、`/bin/bash`です)
148
+
149
+
150
+
151
+ cronの設定に、`bash`の実体ファイルをフルパスで追記してください。
152
+
153
+ 例えば、以下のような感じです。
154
+
155
+ ##### Before
156
+
157
+ ```
158
+
159
+ * * * * * cd /home/hoge/Desktop/hoge/sample; ./sample.sh
160
+
161
+ ```
162
+
163
+
164
+
165
+ ##### After
166
+
167
+ ```
168
+
169
+ * * * * * cd /home/hoge/Desktop/hoge/sample; /bin/bash ./sample.sh
170
+
171
+ ```
172
+
173
+
174
+
175
+ これで、シェルが正しく実行されるか、あるいはエラーメッセージがどのように変わるか確認してみてください。
176
+
177
+ ---
178
+
179
+ ちなみに、当ご質問とは無関係ですが、 /var/log/syslog に
180
+
181
+ ```
182
+
183
+ Jul 4 15:47:01 hoge cron[629]: (*system*) INSECURE MODE (group/other writable) (/etc/crontab)
184
+
185
+ ```
186
+
187
+ と出力されていることから、`/etc/crontab`ファイルのグループがおかしいためにこの設定ファイルが無視されています。
188
+
189
+
190
+
191
+ これはこれで、別途、調査する必要があると思います。