伴随着梦想前行

标签 shell 下的文章

22/10
2019

shell脚本实现的多进程管理

#mgr.sh
#!/bin/bash

base_dir=$(cd dirname "$0" && pwd)

TASK_COUNT=24
MUTEX_FILE=${base_dir}/count.mutex
BIN=/usr/bin/php

function maybe_wait() {
    while :
    do
        cnt=lsof ${MUTEX_FILE} | awk '$1=="sh"' | wc -l
        echo "LIMIT_TASK_COUNT: $TASK_COUNT, CURRENT: $cnt"
        if (( $cnt < $TASK_COUNT )); then
            break
        fi
        sleep 10
    done
}

for day in cat ${base_dir}/days.list
do
    echo "wait: $day, $hour"
    maybe_wait

    sh ${base_dir}/task.sh ${day} &> ${base_dir}/logs/${day}.log &
done
#task.sh
#!/bin/bash

base_dir=$(cd dirname "$0" && pwd)

MUTEX_FILE=
exec 7<>${MUTEX_FILE} 

if (( 1 > $# )); then
    echo $0 yyyy-mm-dd
    exit
fi

day=$1

echo $day

+ MORE

10/9
2018

linux shell 多条语句的关系

在用linux命令时候, 我们经常需要同时执行多条命令, 那么命令之间该如何分割呢?

分号 : 顺序地独立执行各条命令, 彼此之间不关心是否失败, 所有命令都会执行。
&& : 顺序执行各条命令, 只有当前一个执行成功时候, 才执行后面的。
|| : 顺序执行各条命令, 只有当前面一个执行失败的时候, 才执行后面的。

分号很好理解, 而&&和||与C/C++中的短路求值有异曲同工之妙。

+ MORE