Linux基础知识--进程管理与计划任务
Posted bigbigtong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux基础知识--进程管理与计划任务相关的知识,希望对你有一定的参考价值。
Linux启动流程:
开机自检Bios是检测硬件以及各个设备是否准备好
MBR引导是看系统放在哪个位置,进行加载;引导分区,里面有多个系统,看需要启动哪个系统
GRUP菜单,进行一些选项,比如说看启动哪个系统
INIT进程:
由Linux内核加载运行/sbin/init程序
是系统的第一个进程,是所有进程的祖宗,PID(进程标记)号永远为1
配置文件/etc/inittab
Linux系统运行级别(runlevels)
有7个级别,
0关机
1单用户模式
2字符界面的多用户界面(不支持网络)
3字符界面的完整多用户界面
4未分配使用
5图形界面的多用户界面
6重新启动
runlevel命令可以查看系统的运行级别,结果为两个数字,前者为切换前的系统级别,后者为当前级别
查看系统服务的启动状态:
格式:chkconfig --list
chkconfig --list 服务名称 可以查看每个级别下的服务启动状态
服务脚本位置:/etc/init.d /etc/rc.d/init.d
设置系统服务的启动状态
格式:chkconfig --level 级别列表 服务名 on|off
可以设置在哪些级别中服务的启动状态
进程管理:
程序和进程:程序是保存在硬盘、光盘等介质中的可执行代码和数据,是静态保存的代码;进程是在CPU及内存中运行的代码,是动态执行的,每个进程都可创建一个或多个子进程(父、子进程)
ps统计静态进程的信息:
ps aux
ps -elf
a显示当前终端下的所有进程信息
u使用以用户为主的格式输出进程信息
x显示当前用户在所有终端下的进程信息
-e显示系统内的所有进程信息
-l使用长格式显示进程信息
-f使用完整格式显示进程信息
top查看动态的进程排名信息,q退出查看
pgrep根据特定的条件查询进程PID信息
-l列出进程名称
-U根据进程所属的用户名进行查找
-t根据进程所在终端进行查找
pgrep [选项]... 进程名
[root@localhost ~]# pgrep "init" 1 [root@localhost ~]# pgrep -l "init" 1 init [root@localhost ~]# pgrep -l "log" 6771 syslogd 6774 klogd [root@localhost ~]# pgrep -l -U root "log" 6771 syslogd 6774 klogd
init的进程PID为1,进程名是init,包含log进程的进程PID有6771、6774
pstree以树形结构显示进程之间的信息
pstree -aup
-u列出进程对应的用户名
-a列出进程对应的完整命令
-p列出进程的ID号
进程的不同启动方式
手动启动
前台启动:用户输入命令,直接执行程序
后台启动:在命令行尾加上“&”符号
调度启动:
使用at命令,设置在某个时间执行一次任务
使用crontab命令,设置固定周期重复执行预先计划好的任务
进程前后台调度
Ctrl+Z将当前进程挂起,即调入后台
jobs命令,查看处于后台的任务列表
fg命令,将处于后台的进程恢复至前台,需指定任务序号
Ctrl+C终止正在执行的命令
kill用于终止指定PID的进程
killall用于终止指定名称的所有进程,-9选项用于强制终止
pkill根据特定条件终止相应进程
-U根据进程所属的用户名终止相应进程
-t根据进程所在终端终止相应进程
[root@localhost ~]# ping 192.168.xx.1 PING 192.168.xx.1 (192.168.xx.1) 56(84) bytes of data. [1]+ Stopped ping 192.168.xx.1 [root@localhost ~]# jobs [1]+ Stopped ping 192.168.xx.1 [root@localhost ~]# fg 1 ping 192.168.xx.1 --- 192.168.xx.1 ping statistics --- 7 packets transmitted, 0 received, 100% packet loss, time 15995ms [root@localhost ~]# jobs
Linux中ping物理机的IP,进行会一直执行,Ctrl+Z将当前进程调入到后台,jobs查看后台进程,任务序号为1,fg 1将后台进程调入到前台,Ctrl+C终止当前进程
计划任务管理
一次性任务,使用at命令,指定日期、时间点执行一些预定的命令操作
服务脚本名称:/etc/init.d/atd,在执行这个命令之前首先要保证atd服务启动
格式:at [HH:MM] [yyyy-mm-dd]
启动服务:service atd start,或者/etc/init.d/atd start
查看服务启动状态:service atd status
Ctrl+D提交任务
atq查询当前设置的at任务列表
atrm删除指定任务编号的at任务
atrm 编号
[root@localhost ~]# cd /home [root@localhost home]# ls audispd.conf file1.tar.gz file3 test test2 file1.tar file2.tar.gz file3.tar.gz test1 test.tar.bz2 [root@localhost home]# date Sat Feb 16 20:00:36 CST 2019 [root@localhost home]# at 20:02 at> touch file04 at> <EOT> job 1 at 2019-02-16 20:02 [root@localhost home]# date Sat Feb 16 20:01:19 CST 2019 [root@localhost home]# date Sat Feb 16 20:02:34 CST 2019 [root@localhost home]# ls audispd.conf file1.tar file2.tar.gz file3.tar.gz test1 test.tar.bz2 file04 file1.tar.gz file3 test test2
在home目录下,开始没有file04,现在想要在当天的20:02时刻创建file04,。因此首先获取当前时间,制定当前时间之后的某个时间点创建file04的任务计划,按Ctrl+D提交计划,时间到了,发现任务执行完毕,file04创建。
周期性任务crontab,按照预先设置的时间周期重复执行任务
服务脚本名称:/etc/init.d/crond,设置计划之前保证服务启动
全局配置文件,位于/etc/crontab
系统默认的设置位于/etc/cron.*/
用户定义设置,位于文件/var/spool/cron/用户名
crontab -e [-u 用户名] 编辑计划任务,不指定用户默认当前用户
crontab -l [-u 用户名] 查看计划任务,不指定用户默认当前用户
crontab -r [-u 用户名] 删除计划任务,不指定用户默认当前用户,只能删除当前用户的周期性任务计划
只有root用户才能为其他用户制定周期性任务计划,其他用户只能管理自己的周期性任务计划
任务配置格式:
分钟(0-59) 小时(0-23) 日期 月份 星期 (0-7) 命令(要执行的命令或程序脚本)
时间数值的特殊表示方法:
*表示该范围内的任意时间
,表示间隔多个不连续的时间点
-表示一个连续的时间范围
/指定间隔的时间频率
示例:
0 17 * * 1-5 每天周一到周五的17点整
30 8 * * 1,3,5 周一周三周五的8:30执行
0 9-22/2 * * 7 星期天的9点到22点每隔两小时执行一次
案例:
每天早上7:50自动开启sshd服务,22点50时关闭
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
每周六的7:30时,重新启动httpd服务
每周一、三、五的17:30时,打包并压缩/etc/httpd目录
[root@localhost home]# cd /var/spool/cron [root@localhost cron]# ls [root@localhost cron]# crontab -e -u root
进入/var/spool/cron目录,开始编辑计划任务
50 7 * * * /sbin/service sshd start 50 22 * * * /sbin/service sshd stop 0 * */5 * * /bin/rm -rf /var/ftp/pub/* 30 7 * * 6 /sbin/service httpd restart 30 17 * * 1,3,5 /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ -- INSERT --
相应的服务或者指令要写出绝对路径,查看当前用户的任务计划
[root@localhost cron]# crontab -l 50 7 * * * /sbin/service sshd start 50 22 * * * /sbin/service sshd stop 0 * */5 * * /bin/rm -rf /var/ftp/pub/* 30 7 * * 6 /sbin/service httpd restart 30 17 * * 1,3,5 /bin/tar jcvf httpdconf.tar.bz2 /etc/httpd
删除之后,发现没有任何任务计划
[root@localhost cron]# crontab -r [root@localhost cron]# crontab -l no crontab for root
总结:
INIT进程,系统的第一个进程,PID为1,存放在/etc/inittab
runlevels,Linux系统的运行级别,0-7,7个级别,4未分配;runlevel命令查看最近一次修改之前的运行级别和当前运行级别
chkconfig --list
chkconfig --level 级别列表 服务名 on|off
ps统计静态进程信息,ps aux
top查看动态进程排名信息
pgrep根据条件查询进程信息
pstree以树形结构显示进程之间的关系,pstree -aup
Ctrl+Z、jobs、fg 任务序列号、Ctrl+C、kill、killall、killall -9
at一次性任务,/etc/init.d/atd 、atq、atrm
crontab周期性任务计划,/etc/init.d/crond、/var/spool/cron/用户名、crontab -e、crontab -l、crontab -r
以上是关于Linux基础知识--进程管理与计划任务的主要内容,如果未能解决你的问题,请参考以下文章