进程管理和计划任务

进程概念

      task struct:内核存储进程信息的数据结构

      task  list:     多个任务的task struct 组成的链表

      创建进程  CoW   Copy on Write   写时复制   

      子进程只有在数据发生变化的时候才会把父进程的内存空间复制一份给子进程,否则父进程和子进程是 占用一块相同的内存空间的.

      进程的几种状态

         1.创建

         2.就绪

         3.执行

         4.阻塞

         5.睡眠

              1.可中断睡眠

              2.不可中断睡眠

         6.终止

 

   进程优先级

        数字越小,优先级越高

        每个优先级包含两个队列,分别为运行队列和过期队列.在cpu运行同一个优先级的进程中,运行队列和过期队列会不停的进行切换.

 

 进程内存

       内存存放进程信息是以页框为基本单位的,每页的大小是4k

 

  LRU内存近期最少使用算法

物理地址空间和虚拟地址空间(线性地址空间)

         对于一个应用程序来说,操作系统会分配一段真实的内存空间给此进程,但进程会把此段物理空间虚拟成操作系统中整个内存空间.

 

进程之间的通信

    同一主机

                  signal 信号

                  shared memory  共享内存

                  semaphore   信号量,一种计数器

    不同主机

                  socket       IP地址+端口号

                  RPC          远程调用

                  

 

                  MQ           消息队列

 

 

进程管理工具

   Linux进程管理工具   ps、pgrep, pkill、uptime、top、htop、 vmstat、glances,kill, killall

   Linux作业控制jobs、fg、bg、kill及进程优先级nice值调整 

 

进程前后台切换

    18,19 代表信号类型

    cmd &    虽然能把命令发送到后台执行,但是依然和执行的终端相连.把终端关闭,后台进程也会被终止掉.

  

    剥离后台进程和终端的关系

       nohup COMMAND &>/dev/null  & 

       screen;COMMAND 

       使用nohup 启动的后台进程如果把对应的终端关闭后,后台进程的父进程由原来的Bash进程变成了systemd(系统的第一个进程)

 

进程的并行执行

    同时运行多个进程,提高效率

    方法1

       vi all.sh           

             f1.sh&

             f2.sh&

             f3.sh&

    方法2

             (f1.sh&);(f2.sh&);(f3.sh&)

    方法3

             { f1.sh& f2.sh& f3.sh& } 


 计划任务

     未来的某个时间点执行一次性任务

          batch:  系统自行选择空闲时间去执行指定任务(用的比较少)

          at:       指定具体时间点执行某些命令

                     命令文件保存在        /var/spool/at      目录下

                     计划任务命令中的标准输出默认会以邮件的方式发送给用户 可以把标准输出重定向到  &> /dev/null 中

         黑名单和白名单的设置规则

               系统默认存在一个黑名单  /etc/at.deny文件        白名单文件需要自己手动添加  /etc/at.allow

               如果有白名单文件就只查看白名单里面的用户,只有在白名单里的用户才有权限创建at任务

               其它用户不管在不在黑名单里都无权创建at任务

               如果只有黑名单文件就只查看黑名单里面的用户,只有黑名单的用户才会无权创建任务,其它用户都可以创建计划任务.

               如果黑名单文件和白名单文件都不存在,那么只有root用户才能创建任务,其它用户都无法创建计划任务.

     周期性的运行某个任务

         cron

         /etc/crontab    配置格式   只有root用户才有权限修改此文件

         * 代表 每分钟  or  每小时  or 每天(循环执行)  注意和 0 的区别 0代表整点(一个时间点执行一次)

         分(0-59)      时(0-23)     天(1-31)      月(1-12)          星期([0,7]-6)          用户名         cmd

        星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作.

        逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”.

        中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”.

       正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次

                             同时正斜线可以和星号一起使用   例如*/10.如果用在minute字段,表示每十分钟执行一次.

        

       

 

        黑白名单设置同at规则一样

        普通用户创建定时计划任务

             crontab   -e

        存放的任务文件存储在  /var/spool/cron  目录下

 

计划任务依赖的后台服务

      at  依赖  系统后台服务    atd

      cron 依赖 后台服务   crond

      

   

posted @ 2018-05-05 10:39  不懂123  阅读(196)  评论(0编辑  收藏  举报