Swapoff 不能与 cron 一起工作

Swapoff 不能与 cron 一起工作

我有这个测试脚本:

root@PC:~# cat /usr/wsh/swap_reload.sh
# Swap clear
# 03.08.2017
swapoff -a ;
swapon /tmp/swap

root@PCA73:~# ls -l /usr/wsh/swap_reload.sh 
-rwxr-xr-x 1 root root 94 авг 10 16:24 /usr/wsh/swap_reload.sh

我还添加了 cron 任务(root cron):

* * * * * /usr/wsh/swap_reload.sh

但是当我每 5 分钟查看一次时free- 它并没有变化(但是每分钟都应该刷新分配的交换,不是吗?

root@PCA73:~# free -h
                   total        used        free      shared  buff/cache     
available Mem:     31G          921M        3,9G         16G      26G 
13G Swap:           99M          47M         52M

为什么它不起作用?

答案1

你的脚本没有 Shebang 行

#!/bin/sh
...

如果没有该行,脚本只能从 shell 运行,并且该 shell 将猜测该脚本将作为 shell 脚本执行。基本顺序如下:

  • shell 尝试将脚本作为二进制文件执行,而内核可能会或可能不会寻找魔法数字(将#!其计为魔法数字)
  • 如果这不起作用,那么 shell 会将该脚本作为 shell 脚本执行。

这就是为什么当你从 shell 调用脚本时它能起作用,尽管它缺少 shebang 行。

如果你从 cron 运行脚本,那么就没有父壳 可以猜测如何执行脚本。为了避免这种情况,请添加 舍邦像这样:

#!/bin/sh
# Swap clear
# 03.08.2017
swapoff -a ;
swapon /tmp/swap

进一步阅读:

相关内容