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

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

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

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

Linux

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Q&A

解決済

1回答

2237閲覧

Linuxのcronでメモリ開放を定期実行したい

tonton32

総合スコア4

cron

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

Linux

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

0グッド

1クリップ

投稿2023/01/26 09:51

ubuntu20.04を使用しています。

cronで定期的にメモリ開放(キャッシュ削除?)したいと思い、
以下のコードを書いてターミナルから実行しました。

echo 1 | sudo tee /proc/sys/vm/drop_caches > /dev/null

free -h コマンドにて、
無事実行した事が確認できました。

次にこれをシェルスクリプト化するべく
memory_release.shファイルを作成しました。

#!/bin/bash
echo 1 | sudo tee /proc/sys/vm/drop_caches > /dev/null
echo "OK"

こちらもターミナルから実行し、
free -h コマンドにて無事実行を確認できました。
(sudo bash memory_release.sh)→ "OK"と表示される

そしてcronにこのシェルスクリプトの実行を指定したのですが、
cronで実行した時のみ上記のメモリ開放のコマンドが動きません…

(cronに設定した内容)

          • /usr/bin/bash /home/ubuntu/memory_release.sh >/tmp/memory_release.log 2>&1

実行後にcat memory_release.log にて表示された内容
: Permission denied_release.sh: line 2: /dev/null
OK

ls -l /dev/nullはこのように表示されます
crw-rw-rw- 1 root root 1, 3 Jan 24 18:16 /dev/null

「permission Denied /dev/null」
というキーワードにて検索を試みたのですが、
どうにも解決方法がわからずこちらに質問させていただきました。

どなたかおわかりの方がいらっしゃいましたら、
ご教授いただきたくよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

現象的には、スクリプトファイルの改行コードが CRLF になっていて、既存の/dev/nullに書くんじゃなくて/devディレクトリに新規に「nullの後にCR」という名前のファイルを作ろうとして、/devの更新権限が無いのでエラーなのでしょう。

そうだとすると、改行コードがCRLFになっているのが謎。もしかして、Windowsでファイルを作ってるんですか??

そもそもsudo出来る権限があるなら、普通はrootのcrontabに

crontab

1* * * * * echo 1 > /proc/sys/vm/drop_caches

とかでしょうか。

投稿2023/01/26 10:02

otn

総合スコア84557

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

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

tonton32

2023/01/26 10:12

WindowsのVScodeにてスクリプトファイルを作成し、 Tera Termにてubuntuに転送して実行していました。 * * * * * echo 1 > /proc/sys/vm/drop_caches こちらをrootのcrontabに指定して無事実行できました。 的確で迅速なご回答をいただきありがとうございました。
otn

2023/01/26 10:41

Windowsで作成ですか。 VScodeだと、拡張子が sh だとデフォルトで改行コードが LF になるようなので、今度からそうしましょう。
otn

2023/01/26 12:51

なお、一般ユーザーでsudoで実行したい場合は、普通はこうでしょう。 sudo sh -c "echo 1 > /proc/sys/vm/drop_caches"
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問