Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2534937
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: AIX

2015-01-20 10:29:52


点击(此处)折叠或打开

  1. #!/bin/sh

  2. #程序描述:个性化的nohup,可以判断程序是否启动,如启动,则不重复启动指定程序
  3. #作者:    程晓鹏
  4. #日期:    2015.01.14

  5. #获取进程ID
  6. #参数1:要查询的进行名称
  7. #参数2:要屏蔽的参数
  8. #返回值,进程ID
  9. function PID
  10. {
  11.   exe="$1";
  12.   no_grep="$2";
  13.   pid=`ps -ef | grep "$exe" | grep -v "$no_grep" | grep -v grep | awk '{print $2}'`;
  14.   echo "$pid";
  15. }

  16. #错误信息打印
  17. function error_info
  18. {
  19.   echo "use run_nohup.sh /start_file_path [/sendlog_to_filepath] [0/1]";
  20. }

  21. args_size=$#; #参数个数
  22. if [ "$args_size" -gt 0 ]; then
  23.   filepath=$1;
  24.   filename=`basename $1`; #文件名
  25.   pid=$(PID "$filename" "$0"); #查询执行的文件名,当前进程中是否存在
  26.   shift; #移出一个参数(将执行的shell路径移出)
  27.   print_log_path=$1;
  28.   if [ "$args_size" -gt 1 ]; then
  29.     shift; #移出一个参数
  30.   fi;
  31.   
  32.   is_append=$1;
  33.   if [ "$is_append" != "1" ]; then
  34.     is_append=0; #当没有该参数时,默认赋值为0
  35.   fi;

  36.   if [ ${#pid} -gt 0 ]; then #当进程,正在运行时
  37.     print_loginfo="$filepath 已经启动,无须进行启动,进程ID=$pid";
  38.     if [ ${#print_log_path} -gt 0 ]; then #当含有打印日志,输出目录时
  39.        if [ "$is_append" != "1" ]; then
  40.          echo "$print_loginfo" > "$print_log_path";
  41.        else
  42.          echo "$print_loginfo" >> "$print_log_path";
  43.        fi;
  44.      else
  45.        echo "$print_loginfo";
  46.     fi;
  47.   else
  48.     print_loginfo="$filepath 开始启动... ...";
  49.     if [ ${#print_log_path} -gt 0 ]; then #当含有打印日志,输出目录时
  50.      
  51.         if [ "$is_append" != "1" ]; then
  52.           echo "$print_loginfo" > "$print_log_path";
  53.         else
  54.           echo "$print_loginfo" >> "$print_log_path";
  55.         fi;
  56.     nohup "$filepath" >> "$print_log_path" 2>&1 & #执行nohup操作
  57.     else
  58.       echo "$print_loginfo";
  59.       nohup "$filepath" & #执行nohup操作
  60.     fi;
  61.   fi;
  62. else
  63.   error_info; #打印错误信息
  64. fi;

调用方式,在另外的一个shell脚本文件中,进行调用,例如。
/mypath/run_nohup.sh "/mypath/crm4_smssend.sh";
阅读(5606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~