Linux进程和任务管理

process 进程

进程-线程等

Job

前台--后台:
    后台任务"与"前台任务"的本质区别只有一个:是否继承标准输入
联机--脱机 -以及crontab
    脱机管理主要是针对终端异常断开的情形。     脱机工作:离线后台运行
    通常使用nohup命令来使得脱机或注销之后,Job依旧可以继续运行。也就是说nohup忽略所有挂断(SIGHUP)信号
    00. 无论是前台作业还是后台作业,两者都来自当前的shell,是当前shell的子程序。
               下面是两者的定义。
               前台作业:可以由用户参与交互及控制的作业我们称之为前台作业。
               后台作业:在内存可以自运行的作业,用户无法参与交互以及使用[ctrl]+c来终止,只能通过bg或fg来调用该作业。
                a、  command &  直接让作业进入后台运行
               b、   [ctrl]+z   将当前作业切换到后台
               c、   jobs       查看后台作业状态
               d、   fg %n      让后台运行的作业n切换到前台来
               d、   bg %n      让指定的作业n在后台运行
               e、   kill %n    移除指定的作业n
                    "n" 为jobs命令查看到的job编号,不是进程id。
               每一个job会有一个对应的job编号,编号在当前的终端从1开始分配。
01. crontab命令被用来提交和管理用户的需要周期性执行的任务。crond的概念和crontab是不可分割的。crontab是一个命令,
     常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。
     该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。而crond正是它的守护进程。
        Linux下的任务调度分为两类:系统任务调度和用户任务调度
            在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件
        所有用户定义的crontab文件都被保存在/var/spool/cron目录中
 02.crontab文件
        crontab支持两种状态:
            a.直接编写计划任务;
            b.使用目录的方式,放在目录里面的都会定时执行,定时目录可在/etc/crontab中设定
                第一步:写cron脚本文件,命名为crontest.cron。
                                    15,30,45,59 * * * *    echo "xgmtest....." >> xgmtest.txt  表示,每隔15分钟,执行打印一次命令 
                第二步:添加定时任务。
                                执行命令 “crontab crontest.cron”
                第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

                            解释:
                                *             *          *           *           *    /bin/sh /scripts/yy.sh
                                分            时      日           月            周    命令和文件路径
                                (00-59)  (0-23)  (1-31)  (1-12)   (0-6)
                            所用符号表示意思
                                    * 星号每的意思
                                        - 减号连续一段时间,如:00 17-19 * * * cmd  每天下午17点,18点,19点执行一次命令
                                        , 逗号多个时间段,如:00 10-11,17-19 * * * cmd 每天的上午10,11点整,下午的17,18,19点整执行一次命令
                                        /n n代表数字,指每隔n时间执行一次,如: */2 * * * * cmd 每隔2分钟执行一次命令
     注意事项:
        创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,
        这种情况一般是由于在crontab文件中没有配置环境变量引起的。在 crontab文件中定义多个调度任务时,
        需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个任务时,是在当前shell环境下进行的,程 序当然能找到环境变量,
        而系统自动执行任务调度时,是不会加载任何环境变量的,因此,就需要在crontab文件中指定任务运行所需的所有环境变量,这 样,系统执行任务调度时就没有问题了。
        不要假定cron知道所需要的特殊环境,它其实并不知道。所以你要保证在shelll脚本中提供所有必要的路径和环境变量,
        除了一些自动设置的全局变量。所以注意如下:               
            1)脚本中涉及文件路径时写全局路径;              
            2)脚本执行要用到java或其他环境变量时,通过source命令引入环境变量,如:               
            cat start_cbp.sh                
            #!/bin/sh               
            source /etc/profile             
            export RUN_CONF=/home/d139/conf/platform/cbp/cbp_jboss.conf             
            /usr/local/jboss-4.0.5/bin/run.sh -c mev &
        新创建的cron job,不会马上执行,至少要过2分钟才执行。如果重启cron则马上执行
    仅仅执行一次 at   守护进程 atd
        用户准备退出 session
        系统向该 session 发出SIGHUP信号
        session 将SIGHUP信号发给所有子进程
        子进程收到SIGHUP信号后,自动退出
        上面的流程解释了,为什么"前台任务"会随着 session 的退出而退出:因为它收到了SIGHUP信号。
        那么,"后台任务"是否也会收到SIGHUP信号?
        这由 Shell 的huponexit参数决定的。
        $ shopt | grep huponexit
        执行上面的命令,就会看到huponexit参数的值 大多数Linux系统,这个参数默认关闭(off)。因此,session 退出的时候,不会把SIGHUP信号发给"后台任务"

守护进程

daemon  守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务
        一般在命名后面会加一个d,表示守护进程
            1.service命令是Redhat Linux兼容的发行版中用来控制系统服务的实用工具,
                它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
                 centos
            启动某个独立的守护程序服务的方式
            2.etc/init.d/syslog start
                建议大家将service命令
                替换为/etc/init.d/mysqld stop(因为有一些linux的版本不支持service)

进程

1.进程分类
    01.守护进程
        前台进程
        后台进程
    02.父进程
        子进程
    03.系统进程
        用户进程
2.进程状态
    基本状态
            就绪状态
            运行状态
            阻塞状态
    转换过程
            就绪状态---> 运行状态-                        
            运行状态---->阻塞状态
            运行状态--->就绪状态
            阻塞状态---> 就绪状态               <唤醒>
3.进程的查看
    ps
    pstree
    top
4.进程的组成
    程序
    数据
    进程控制块(PCB) 
            包含<标志信息、说明信息、现场信息、管理信息>
            结构: 线性  索引 链式
    5.进程控制

相关内容    :
    作业控制

参考:

Service : http://man.linuxde.net/service
Linux 前后台作业切换及脱机管理 http://blog.csdn.net/leshami/article/details/8889014
Linux 守护进程的启动方法 http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html

blogroll

social