zoukankan      html  css  js  c++  java
  • 进程--计划任务

    进程:动态存储在内存中的一段代码
    [sb@localhost etc]$ cd /
    [sb@localhost /]$ ls
    a1 a3 boot dev home lost+found misc net proc sbin srv tmp var
    a2 bin cgroup etc lib media mnt opt root selinux sys usr
    proc和sys并没有加载在硬盘上,而是加载在内存里,以文件系统的形式表现,所以是伪文件系统。

    在内存中的东西,本身文件夹中没有任何东西。(第一行数字为PID号)
    [sb@localhost /]$ cd proc/
    [sb@localhost proc]$ ls
    1 1751 22 2479 2821 311 5800 dma net
    10 1760 2250 2489 2822 312 5913 driver pagetypeinfo
    1014 1761 2256 2490 2844 313 5914 execdomains partitions
    1018 18 2297 2491 2865 314 6 fb sched_debug
    11 1804 23 2492 2866 315 6101 filesystems schedstat
    12 1807 2308 25 2871 316 6102 fs scsi
    13 1824 2312 2509 2873 317 6528 interrupts self
    1342 1847 2337 253 2876 318 6529 iomem slabinfo
    1376 19 2346 2542 2896 319 6600 ioports softirqs
    14 1914 2355 2543 2899 320 67 irq stat
    15 2 2356 2544 29 321 6742 kallsyms swaps
    1537 20 2416 2546 2900 322 7 kcore sys
    1562 2090 2420 2547 2901 323 777 keys sysrq-trigger
    16 2097 2427 2550 298 324 8 key-users sysvipc
    1607 21 2432 2552 299 325 9 kmsg timer_list
    1619 2101 2436 257 3 326 965 kpagecount timer_stats
    1628 2109 2445 2583 300 327 966 kpageflags tty
    1639 2120 2453 26 301 34 acpi loadavg uptime
    1644 2133 2455 266 302 36 asound locks version
    1653 2138 2457 267 303 37 buddyinfo mdstat vmallocinfo
    1654 2140 2467 268 304 4 bus meminfo vmstat
    1655 2142 2468 27 305 475 cgroups misc zoneinfo
    1672 2146 2470 2746 306 482 cmdline modules
    17 2148 2472 2760 307 494 cpuinfo mounts
    1709 2163 2474 2782 308 495 crypto mpt
    1716 2165 2475 2786 309 5 devices mtd
    1726 2180 2477 28 310 578 diskstats mtrr

    进程:
    内存存储空间分成两大部分:内核空间(swap空间),用户空间(物理内存)
    进程在内存中有常驻内存和虚拟内存
    如果kill 1672,结束进程,文件夹也会消失

    [sb@localhost proc]$ cd /boot/
    [sb@localhost boot]$ ls
    config-2.6.32-71.el6.i686 lost+found
    efi symvers-2.6.32-71.el6.i686.gz
    grub System.map-2.6.32-71.el6.i686
    initramfs-2.6.32-71.el6.i686.img vmlinuz-2.6.32-71.el6.i686
    每次开机post→检测
    CPU→RAM(内存)→MBR(容器)→硬盘

    当开机时init进程号为1,是第一个进程,负责将系统在内存加载完整,并将数据存储在硬盘上。

    user 用户
    share 共享内存,可以中断
    swap
    ksp 内核,支撑操作系统的运行,不能关掉。
    房屋承重墙,必须存在→内核
    房屋公摊 →共享内存
    共享内存:
    申请QQ,每人申请一次,QQ服务器则要启动一次,但是很累,所以启动共享内存,可以中断。

    例:打开百度,出门,没人动,回来百度可以照样使。是谁来记录并保存这个进程的状态?
    Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息。(源码中)
    task_struct:进程描述符,来保存、记录进程运行的状态。
    task_struct所管理内容:和命令相关的应用程序(硬盘)
    PID(内存/var/run)
    进程运行状态(继续而不会重新开始)
    进程的生命周期等(写软件能写好的)10项。

    例:QQ聊天、输入法(子进程)
    QQ fork执行
    exec(函数)
    复制、分叉 exit

    占用QQ的空间 wait等待

    “僵尸进程”关闭不了就要关闭“父进程”。

    CPU:一次只能处理一个进程,每个进程根据优先级轮回交替运行,记录进程运行状态。

    进程优先级:比较多的分配CPU使用时间,优先执行,linux进程优先级是0-139,其中0-99是内核控制,100-139用户可控,数越小优先级越高。
    管理员可以手动调整40个(-20到19),普通用户可以手动调整20个(0到19)。
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    2165 root 20 0 64028 20m 7308 S 2.3 1.0 0:20.41 Xorg
    2899 root 20 0 91956 14m 11m S 0.3 0.7 0:04.03 gnome-terminal
    1 root 20 0 2828 1388 1192 S 0.0 0.1 0:01.31 init
    2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
    PR+NI=数字(越小优先级越高)。

    通过renice调整
    renice -5 PID
    优先级高的进程:第一,CPU优先执行
    第二,执行时间变长

    进程分类:和终端有关的进程,和终端无关的进程。

    ps:process status(静态进程状态):BSD风格(不使用连字符),unix风格(使用连字符),GNU长选项(使用两个连字符)
    a:显示和终端有关的进程
    u:显示进程用户的信息
    x:显示和终端无关的进程
    -e:显示所有进程信息
    -l:显示进程长格式
    -F:显示进程的完整信息
    [root@localhost boot]# ps aux |head
    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    root 1 0.0 0.0 2828 1388 ? Ss 19:45 0:01 /sbin/init
    root 2 0.0 0.0 0 0 ? S 19:45 0:00 [kthreadd]
    root 3 0.0 0.0 0 0 ? S 19:45 0:00 [migration/0]
    root 4 0.0 0.0 0 0 ? S 19:45 0:00 [ksoftirqd/0]
    root 5 0.0 0.0 0 0 ? S 19:45 0:00 [watchdog/0]
    root 6 0.0 0.0 0 0 ? S 19:45 0:00 [events/0]
    root 7 0.0 0.0 0 0 ? S 19:45 0:00 [cpuset]
    root 8 0.0 0.0 0 0 ? S 19:45 0:00 [khelper]
    root 9 0.0 0.0 0 0 ? S 19:45 0:00 [netns]
    1)、use用户:为什么用户不一样,在Linux中,小于1024的端口必须由root管理员的应用程序,称为master process(管理进程),由各自用户(如httpd专门管理用户apache)管理的进程称为worker process(工作进程)。
    5)、VSZ:虚拟共享内存
    8)、STAT:状态
    S:休眠 R:运行 s:(session)领导者:父进程 z:僵尸进程(关闭了进程,并没有释放内存,如果是init必须中期才能结束)

    pstree:显示进程树
    top:动态查看系统进程信息,每隔3刷新一次
    t:显示任务cpu信息的开关
    m:显示内存信息的开关
    f:进入top交互屏幕,添加删除所显示的列
    o:进入top交互屏幕,配置top列显示的顺序
    r:使用renice修改某个进程的优先级
    k:杀死一个进程
    h:显示top热键的帮助信息
    进程都有PID号,进程相关PID信息文件保存在/proc下,以
    进程的PID命名的文件夹,保存运行该进程所使用或调用的
    文件
    top信息:PR(primary)内核决定的优先级,0-99
    NI(nice):用户可控优先级,-20到19,普通用户只能提高优先级的值,管理员能够随意调整

    [root@localhost boot]# top
    top - 22:42:34 up 2:56, 2 users, load average: 0.00, 0.00, 0.00
    Tasks: 181 total, 1 running, 180 sleeping, 0 stopped, 0 zombie
    Cpu(s): 2.0%us, 0.3%sy, 0.0%ni, 96.7%id, 0.7%wa, 0.3%hi, 0.0%si, 0.0%st
    Mem: 2071700k total, 661860k used, 1409840k free, 85212k buffers
    Swap: 4161528k total, 0k used, 4161528k free, 312140k cached
    load average: 0.00, 0.00, 0.00
    每隔1、5、15分钟(过去的时间)的负载(1到1.5不可超过)→升级电脑(硬件和并发数)
    uptime可以查看过去的负载
    *us *sy *ni *id *wa *hi *si *st
    用户 系统 nice值 空闲 等待I/O 硬件 软件 被hypervisor偷走
    nice:进过调整优先级的进程使用CPU的百分比
    wa:等待调用CPU百分比
    st:虚拟化的东西
    buffers:缓冲区(共享内存)
    cached:缓存

    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
    time:占用CPU总时间,加起来的和(进程让谁用了多久加起来)
    command:进程名字。
    进程状态:
    D:不可中断睡眠状态
    S:可中断睡眠状态
    R:运行状态
    T:停止状态
    Z:僵尸状态
    s:session leader
    <:优先级较高的进程(用户不可控)
    N:优先级较低的进程(用户可控进程)
    l:多线程进程
    L:在内存中锁定分页
    +:前台进程组中的进程

    pgrep:查看进程PID相关信息
    [root@localhost boot]# pgrep -l "sshd"
    1847 sshd
    [root@localhost boot]# pgrep -l "log"
    1562 rsyslogd

    kill:(结束进程)
    kill: -9(强制终止进程)
    killall:结束进程树,用户kill一样
    pkill:根据条件结束进程,-U指定用户 -t指定终端
    [root@localhost boot]# man kill
    1、正常关闭
    2、强制正常关闭
    9、强制结束(不要轻易用,当我们结束一个进程可能牵扯很多东西,不如重启)

    进程启动方式:
    手工启动(前台启动/后台启动)
    任务计划:atd(一次性) crond(周期性任务计划)
    ctrl+Z:把前台任务暂停放入后台
    jobs:查看后台任务列表
    fg:把后台任务调入前台并恢复运行
    fg:后台→前台→重启
    bg:后台→启用
    [root@www 桌面]# cp /boot/* /tmp/ &
    [1] 2922
    [root@www 桌面]# jobs
    [1]+ Stopped cp -i /boot/* /tmp/
    [root@www 桌面]# fg 1
    cp -i /boot/* /tmp/
    ^C

    查看系统中所开启服务:netstat
    -a:显示系统中所有运行的服务
    -n:以数字形式显示
    -p:显示服务PID号
    -t:显示tcp协议
    -u:显示udp协议

    超级服务:xinetd(依存关系),不需要启动服务本身
    [root@localhost boot]# service crond restart (周期性)
    [root@localhost boot]# service atd restart (一次性)
    [root@localhost boot]# service xinetd restart

    任务计划:
    at:一次性任务计划,由/etc/init.d/atd执行(或/etc/rc.d/init.d)
    守护进程atd,支撑进程。
    [root@localhost ~]# ps aux | grep atd
    rpcuser 1672 0.0 0.0 2584 1092 ? Ss 19:46 0:00 rpc.statd
    root 2120 0.0 0.0 2828 332 ? Ss 19:46 0:00 /usr/sbin/atd
    root 7624 0.0 0.0 5940 768 pts/0 S+ 23:19 0:00 grep atd
    [root@localhost ~]# ps aux | grep stop
    root 7631 0.0 0.0 5936 744 pts/0 S+ 23:19 0:00 grep stop
    atq或者at -l:查看at任务列表
    atrm:删除at任务
    进程状态:
    睡眠状态:不可中断睡眠状态,可中断睡眠状态
    僵尸状态:进程已经运行完成,但是还在占用内存空间

    crond:周期性任务(守护进程crond)
    命令字必须使用绝对路径,普通用户可能执行不了。
    [root@localhost ~]# cat /etc/crontab
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/

    For details see man 4 crontabs

    Example of job definition:

    .---------------- minute (0 - 59)

    | .------------- hour (0 - 23)

    | | .---------- day of month (1 - 31)

    | | | .------- month (1 - 12) OR jan,feb,mar,apr ...

    | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

    | | | | |

    * * * * * command to be executed

    时间点:分钟 小时 日期 月份 星期 (分、时、日、月、周)
    -e:编辑计划任务
    -l:查看计划任务
    -r:删除计划任务

  • 相关阅读:
    文件上传之 MultipartFile
    EL表达式从数组 Map List集合取值
    Servlet监听器
    分页技术框架(Pager-taglib)学习三(pager-taglib中传递参数时中文乱码问题)
    分页技术框架(Pager-taglib)学习二(SSH数据库分页)
    分页技术框架(Pager-taglib)学习一(页面分页)
    从request获取各种路径总结
    jsp的页面包含——静态包含、动态包含
    Java对象的浅克隆和深克隆
    Java序列化与反序列化学习(三):序列化机制与原理
  • 原文地址:https://www.cnblogs.com/guarderming/p/7604222.html
Copyright © 2011-2022 走看看