我有几台服务器已经开始了他们的备份过程,虽然我知道遇到糟糕的情况本身是非常糟糕的,但是我需要这个过程不会死掉,所以在解决内存问题的时候, 。
为此,我试图创build方式来启动与调整的oom_scores进程类似的启动一个进程nice 。
#!/bin/bash function oom_adj_exec() { while getopts ':n:' opt; do case $opt in n) if grep -q '^-\?[0-9]\+$' <(echo "$OPTARG"); then if [ "$OPTARG" -ge -1000 -a "$OPTARG" -le 1000 ]; then oom_score_adjust=$OPTARG else echo "Acceptable values for -n are from -1000 to 1000" >&2 return 255 fi else echo "Improper format for -n: $OPTARG" >&2 return 255 fi break ;; :) echo "option -$OPTARG requires a value" >&2 return 255 ;; *) echo "Unknown option -$opt" >&2 return 255 ;; esac done command=${@:$OPTIND} # job control requires the monitor option which # is usually not set for non-interactive shells prev_state=$(set +o | grep monitor) set -o monitor $command & pid=$! echo "$oom_score_adjust" > /proc/$pid/oom_score_adj fg %% > /dev/null ecode=$? # restore the previous state of the shell $prev_state return $ecode } oom_adj_exec $@
用法示例:
./oom_adj_exec.sh -n -500 /usr/bin/mem_bloater
虽然它似乎工作,我不能动摇的感觉,像有什么等待在那里可怕的错误。 有什么突出的东西是一个真正可怕的想法和/或灾难等待发生?