w
显示信息的含义: ① load average:分别显示系统在过去1,5,15分钟内的平均负载成都 ② FROM:显示用户从何处登录系统,“:0”代表该用户是从X Window下打开文本模式窗口登录的 ③ IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置 ④ JCPU:以终端代号来区分,也就是TTY,该终端所有相关的进程执行时所消耗的CPU时间会显示在这 ⑤ PCPU:CPU执行程序消耗的时间 ⑥ WHAT:用户正在执行的操作
ps 查看隶属于自己的进程
① -a:显示所有用户的进程 ② -u:显示用户名和启动时间 ③ -x:显示没有控制终端的进程,即系统进程 ④ -e:显示所有进程,包括没有控制终端的进程 ⑤ -l:长格式显示 ⑥ -w:宽行显示,可以使用多个w进行加宽显示
ps -aux ps -uU practice ps -l
字段含义PID进程号PPID父进程进程号NI进程优先级TTY进程启动的终端STAT进程当前状态:S-sleeping休眠,D-dormant sleep不可中断的休眠状态,R-running运行状态,Z-zombie僵死状态,T-stop停止ps -le | grep pid 查看制定进程信息 pstree 查看进程树,父子关系一目了然
kill 杀死进程
① kill pid ② kill -l 列出 kill 的所有信号 ③ kill -9 pid 强行关闭 ④ kill -1 pid 重启进程 ⑤ xkill 关闭图形程序,当窗口无法关闭时,可以在启动程序目录下执行xkill来强制关闭 ⑥ pgrep 服务名称 查找服务进程号,会列出该服务的所有进程号 ⑦ pkill 进程名称 进程名称即CMD字段所对应的信息,关闭程序
kill -l pgrep ssh pkill ssh
nice && renice优先级,范围(-20,19),值越小,优先级越高
nice :指定程序的运行优先级 格式:nice -n N command 例如:nice -n -1 vi & 将ssh的运行优先级设为-1
renice:改变一个正在运行的程序的优先级 格式:renice n pid 例如:renice 2 31096 将pid为31096的程序的优先级改为2
nohup 使进程在用户退出登录后仍旧继续执行,将执行后的数据信息和错误信息默认存储到文件~/nohup.out中
格式:nohup programe 前台执行 nohup programe & 后台执行
chmod a+x sleep50.sh nohup ./sleep50.sh & exit ps -alexit
nohup.out文件
top 进程状态显示个进程控制,每5秒自动刷新一次(交互式,每次输入一个值)
① d 指定刷新的时间间隔 ② c 显示整个命令行,而不仅仅显示命令名 ③ u 查看指定用户的进程 ④ k 终止执行中的进程 ⑤ h or ? 获得帮助 ⑥ r 重新设置进程优先级 ⑦ s 改变刷新的时间间隔 ⑧ W 将当前设置写入 ~/.toprc文件中
这个命令显示的是实时信息,输入交互字母(上面①-⑧中的字母)后在图中方框处继续输入要修改的值即可
/proc 文件夹
进程都是在内存当中的,而内存中的数据又都是写入到/proc文件夹下的,每个进程的信息都在以该进程pid命名的文件中,在这里还可以查看cpu,memory等信息
进程的挂起与恢复
中止(挂起,暂停):Ctrl + Z 终止:Ctrl + C 恢复: 查看被挂起的进程 jobs 恢复到前台继续运行 fg jobNum 恢复到后台继续进行 bg jobNum
ps -l top Ctrl + Z jobs fg 1 Ctrl + Z bg 1 ps -l敲黑板划重点,这里很重要!!! 计划任务分为三种类型: (1)at:一次性计划任务 (2)batch:系统负载不重时执行一次 (3)cron:周期性计划任务
接下来,挨个解释 (1)at:安排一个或多个命令在指定时间运行一次,命令要用绝对路径 1) at [-f file] 时间 这里需要注意的是时间怎么写,时间的书写方式分为 绝对计时方法 和 相对计时方法:
绝对计时方法: ① midnight(00:00),noon(12:00),teatime(下午茶时间,16:00),AM,PM这些词都可以用 ② hh:mm [today] 不写方括号里的的话,默认是today ③ hh:mm tomorrow ④ hh:mm 星期 ⑤ hh:mm MM/DD/YY 也可以指定月/日/年
相对计时方法: ① now + n minutes ② now + n hours ③ now + n days ③ now + n weeks
输入完成之后以Ctrl+d结束 (以下例子纯是为了看实际怎么敲,没有实际意义)
at执行的结果不会打印到屏幕上,要想看一下,可以输出到文件里
2)at -l or atq 查看计划任务 3)at -d 序号 atrm 序号 删除计划任务
4)at 配置文件:用来限制哪些用户可以使用at命令 ① /etc/at.allow ② /etc/at.deny ①存在,②不存在时,只有①里的用户才可以使用 ①不存在,②存在时,只有②里的用户不可以使用 都不存在时,只有root才可以使用 都存在,且都为空时,则所有用户都可以使用
(2)batch:安排一个或多个命令在系统负载教轻时运行一次(一般情况下,负载矫情指平均负载降到0.8以下) 使用方法同at
(3)crontab:用于生成cron进程所需要的crontab文件 命令: 1)crontab -l :list,显示当前的crontab 2)crontab -r:rm,删除当前的crontab文件,如果只想编辑一条计划任务,需要编辑crontab文件,将对应条目删除 3)crontab -e:使用编辑器编辑当前的crontab文件,将命令写入crontab文件里
crontab -e //打开文件 04 10 * * 1-5 /usr/bin/wall < /etc/issue //写入计划任务使用xshell登录到服务器:运行结果如下: 这里计划任务中时间格式如下: 分钟 小时 天 月 星期 命令/脚本 (为什么不能指定秒呢?计划任务是每隔一分钟从休眠中醒来,检查一下是否有计划任务,有就执行,没有就继续休眠,所以不能精确到秒) 时间填写方法:把知道的具体时间填上,不知道都填* 举例:
分钟小时天月星期命令/脚本含义备注018**2,5/sbin/shutdown -h now每周二周五18:00执行关机操作不连续的时间可以用”,”隔开3018*1-32,5/usr/bin/wall < /etc/issue一到三月的每周二周五18:30广播/etc/issue文件里的内容连续的时间可以用”-“拼接*/217**1/usr/bin/top每周一17点时每隔两分钟执行一次top命令*/2代表每隔两分钟注意: ① 每一项都不能为空,必须填入 ② 如果用户不需要指定其中的几项,可以使用通配符*表示任何时间 ③ 每个时间字段都可以指定多个值,他们之间用逗号间隔 ④ 命令要用绝对路径 ⑤ 用户必须具有运行对应命令或程序的权限
这部分记一些有关进程的基础知识
程序 vs 进程
程序: 静态概念,本身作为一种软件资源长期保存 进程: 动态概念,程序的执行过程,有一定的生命期,是动态产生和消亡的 ps:程序和进程没有一一对应的关系。一个程序可以有多个进程共用;一个进程在活动中有可能顺序执行若干个程序
父进程 和 子进程
(1)子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程 (2)Linux中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境 (3)父进程终止,子进程自然终止。若发生意外: ① 父进程终止,子进程未成功终止,则称子进程为孤儿进程 ② 父进程未终止,子进程终止,父进程不知道,还会尝试与子进程联系,则此时的父进程称为僵尸进程
前台进程 和 后台进程
前台进程: ① 在shell中敲入命令后,创建一个子进程,运行命令,shell会等待命令退出之后再返回到给出提示符。 ② 这条命令与shell异步运行,即在前台运行,用户在完成之前不能执行另一个命令 后台进程: ① 在shell中敲入命令后,若命令后跟随一个&,shell创建的子进程运行此命令,但不等待命令退出,而直接返回到给出提示符。 ② 这条命令与shell同步运行,即在后台运行。 ③ 后台进程必须是非交互式的
进程状态
简单地分为三种状态: 就绪:进程已经分配到资源。但因为其他进程正占用CPU,所以暂时不能运行而等待分配CPU的状态 等待:因等待某种事件而暂时不能运行的状态 运行:进程分配到CPU,正在处理器上运行
进程状态细化 用户态运行:在CPU上执行用户代码 核心态运行:在CPU上执行核心代码 在内存就绪:具备运行条件,只等调度程序为它分配CPU 在内存睡眠:因等待某一事件的发生,而在内存中排队等待 在外存就绪:就绪进程被交换到外存上继续处于就绪状态 在外存睡眠:睡眠进程被交换到外存上继续等待 在内存暂停:因调用stop程序而进入跟踪暂停状态,等待其父进程发送命令 在外存暂停:处于跟踪暂停态的进程被交换到外存上 创建态:新进程在被创建,但尚未完毕的中间态 终止态:进程终止自己
进程处理方式
(1)standalone:独立运行,一直处于启动状态,响应快 (2)xinetd:进程托管,inetd是会联网超级守护进程,xinetd是它的升级版,有请求时才启动,用完就关掉,响应慢 (3)atd、crond:计划任务,每隔一分钟从休眠中醒来,检查一下是否有计划任务,有就执行,没有就继续休眠