-
#!/bin/sh
-
-
#程序描述:个性化的nohup,可以判断程序是否启动,如启动,则不重复启动指定程序
-
#作者: 程晓鹏
-
#日期: 2015.01.14
-
-
#获取进程ID
-
#参数1:要查询的进行名称
-
#参数2:要屏蔽的参数
-
#返回值,进程ID
-
function PID
-
{
-
exe="$1";
-
no_grep="$2";
-
pid=`ps -ef | grep "$exe" | grep -v "$no_grep" | grep -v grep | awk '{print $2}'`;
-
echo "$pid";
-
}
-
-
#错误信息打印
-
function error_info
-
{
-
echo "use run_nohup.sh /start_file_path [/sendlog_to_filepath] [0/1]";
-
}
-
-
args_size=$#; #参数个数
-
if [ "$args_size" -gt 0 ]; then
-
filepath=$1;
-
filename=`basename $1`; #文件名
-
pid=$(PID "$filename" "$0"); #查询执行的文件名,当前进程中是否存在
-
shift; #移出一个参数(将执行的shell路径移出)
-
print_log_path=$1;
-
if [ "$args_size" -gt 1 ]; then
-
shift; #移出一个参数
-
fi;
-
-
is_append=$1;
-
if [ "$is_append" != "1" ]; then
-
is_append=0; #当没有该参数时,默认赋值为0
-
fi;
-
-
if [ ${#pid} -gt 0 ]; then #当进程,正在运行时
-
print_loginfo="$filepath 已经启动,无须进行启动,进程ID=$pid";
-
if [ ${#print_log_path} -gt 0 ]; then #当含有打印日志,输出目录时
-
if [ "$is_append" != "1" ]; then
-
echo "$print_loginfo" > "$print_log_path";
-
else
-
echo "$print_loginfo" >> "$print_log_path";
-
fi;
-
else
-
echo "$print_loginfo";
-
fi;
-
else
-
print_loginfo="$filepath 开始启动... ...";
-
if [ ${#print_log_path} -gt 0 ]; then #当含有打印日志,输出目录时
-
-
if [ "$is_append" != "1" ]; then
-
echo "$print_loginfo" > "$print_log_path";
-
else
-
echo "$print_loginfo" >> "$print_log_path";
-
fi;
-
nohup "$filepath" >> "$print_log_path" 2>&1 & #执行nohup操作
-
else
-
echo "$print_loginfo";
-
nohup "$filepath" & #执行nohup操作
-
fi;
-
fi;
-
else
-
error_info; #打印错误信息
-
fi;
调用方式,在另外的一个shell脚本文件中,进行调用,例如。
/mypath/run_nohup.sh "/mypath/crm4_smssend.sh";
阅读(5618) | 评论(0) | 转发(0) |