作业管理【Ubuntu-shell】

作业管理:



    每一条shell命令的输入--->一个作业
    cat -n /etc/hosts | more &
    作业,前台交互执行,后台无需交互加“&”
    --------------------------------------
    jobs  【选项】 【作业号】:查看当前系统中后台作业
        -l:列出详细作业信息
        -s:列出停止暂停状态的作业
        -r:列出运行状态的作业
    vim &
    top &
    vim &
    jobs -l
    #[3]+ 23803 停止 (tty 输出)     vim  
    #[作业号]+第一个放置在后台  -第二个放在后台  23803进程PID号 
    #vim 原本需在前台交互,在后台会暂停
    -------------------------------------------------------------
    fg  作业号:使作业在前台执行
    bg  作业号:使作业在后台执行
    -----------------------------------------------------
    #!/bin/bash
    count=$1
    while [ $count -gt 0 ]
    do 
        count=$[ $count - 1 ]
        sleep 0.001
    done
    echo "process $$finish."  
	#$$ 当前脚本的进程PID号
    #process.sh
    -------------------------------------------------   
    vim & 
    top &
    source process.sh  10000 &
    jobs -l
    fg  process.sh的作业号
    jobs  -l
    bg  process.sh作业号
    jobs -l
    ---------------------------------------
    一次性作业
    service     atd     status:

    at [选项】 【作业执行时间】:指定时间执行一次作业
        -l:列出队列中的作业
        -c:后加作业号参数,查看指定作业号的内容
        -f:后加所要执行的作业的文件路径
        -d:删除指定的作业号,参数作业号
    at now +1min
    #wall linux广播   
    at -l

    batch:在负载较大时,暂缓调度作业
    (source process.sh 10000 &);(source process.sh 10000 &);(source process.sh 10000 &)
    cat  /proc/loadavg
    batch
    #wall linux
    at -l
    -----------------------------------------
    周期性作业:
    守护进程crond将周期性作业分类:全局作业、个人用户作业。

    sudo  service crond status


    cat /etc/crontab
    vim /etc/crontab
    #全局作业执行计划配置文件:/etc/crontab
    #作业执行计划模板:分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期(0-6,星期天0或7)  【用户名,如:root】 【执行的命令】  

    crontab 【选项】:维护个人用户的周期性作业计划文件
        -u:后加用户名参数,指定配置用户的cron作业执行计划文件
        -e:编辑当前用户作业执行计划
        -l:显示当前用户作业执行计划
        -r:删除当前用户的作业执行计划
    #个人用户作业执行计划配置文件:/var/spool/cron/用户名命名的cron文件
    ----------------------------------
    制定监控登录用户人数的作业:
    #vim /etc/crontab---->:0-59 * * * * root 【命令】
    su root

    #!/bin/bash
    #ip1,ip2,limit作业执行的参数,表示过滤的IP地址范围和人数限制
    ip1="\(192\.168\.126\.[1-9]\)"
    ip2="\(192\.168\.126\.[1-9][0-9]\{1,2\}\)"
    limit=0
    strdate=`date "+%Y-%m-%d    %H:%M:%S"   `
    count1=`who | grep $ip1 | wc -l`
    count2=`who | grep $ip2 | wc -l`
    count=$[ $count1 + $count2 ]
    if [ $count -gt $limit ]
    then
        echo "$strdate:current users count:$count,exceed limit:$limit" >> /var/log/statiplog
    fi
    #保存olwatch.sh,/root/cron/olwatch.sh

    who

    #vim /etc/crontab------>0,15,30,45 * * * * root /root/cron/olwatch.sh

    service crond status
    chmod u+x /root/cron/olwatch.sh
    source /root/cron/olwatch.sh
    tail /var/log/statiplog
    date
    tail /var/log/statiplog
    ---------------------------------------------
    制定定期备份数据的作业计划:
    su root

    #!/bin/bash
    filelist=`cat ${HOME}/cron/baklist`  
    #  $HOME:/root
    strdate=`date "+%Y%m"`
    backupdir=${HOME}/backup${strdate}
    if [ ! -e $backupdir ]
    then 
        mkdir $HOME/$backupdir
    fi
    echo "$strdate:backup start,the directory name is $backupdir" >> /var/log/baklog
    for filename in $filelist
    do
        if [ -e $filename ] 
        then 
            cp $filename "$backupdir/"  2 > /dev/null
            if [ $? -ne 0 ]
            #  $?:表示最后整句之前运行的命令状态是否等于0
            #  $?等于0表示上一个命令执行成功 否则执行出错
            #  -ne:不等于
            then
                echo "$strdate:copy for $filename failed" >> /var/log/baklog
            fi
        fi
    done
    #cronbackup.sh--->/root/cron/cronbackup.sh保存

    vim /root/cron/baklist
    #编辑加上:/root/crontab
    #编辑加上:/etc/hosts

    date

    vim /etc/crontab
    #--->编辑加上:10 11 3 * * root /root/cron/cronbackup.sh

    date

    ls -R  /root

    cat /var/log/backlog   #查看备份日志


补充:

其他资料:【Linux任务计划crontab】

你可能感兴趣的:(Ubuntu,Linux)