top命令―查看进程动态信息
top命令会在当前终端以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每3秒刷新一次,起作用类似于Windows中的任务管理器。
在top明显显示的全屏界面中,按P键根据CPU占用情况对进程进行排序,按M键根据内存占用情况进行排序,按N键根据启动时间进行排序。按h键可以获得top程序的在线帮助信息,按q键退出。按k键后列表上方会出现"PIDtokill:"的提示信息,在后边输入指定进程的PID号并回车确认后可结束指定进程的运行。
pgrep命令―查询进程信息
pstree命令―查看进程树
pstree命令可以输出Linux系统中各进程的树形结构,能够更加直观的判断出各进程之间的相互关系(父、子进程)。pstree命令默认情况下只显示各进程的名称,结合"-p"选项可以同时列出对应的PID号,结合"-u"选项可以列出对应的用户名,结合"-a"可以列出完整的命令信息。
控制进程
1.启动进程手工启动进程:又分为前台启动和后台启动
进程在前台运行时(例如"ls-l"命令),用户必须等到该进程执行结束并退出以后才能继续输入其它命令,大多数的命令操作都是在前台运行。
启用后台进程需要使用"&"操作符,将"&"操作符放在要执行命令的最后面,进程启动后会直接放入后台运行。
调度启动进程:
可以通过at、crontab命令进行设置,其中at命令用于设置一次性计划任务,crontab用于设置周期性运行的计划任务。调度启动的计划任务进程均在后台运行,不会占用用户的命令终端。
2.改变进程的运行方式
当Linux系统中的命令正在前台执行时(运行尚未结束),按Ctrl+Z组合键何以将当前进程挂起(调入后台并停止执行)。
需要查看当前终端中在后台运行的进程任务时,可以使用jobs命令,结合"-l"选项可以同时显示出该进程对应的PID号。
使用fs命令可以将后台的进程任务重新调入到前台执行,只需指定后台任务对应的顺序编号(通过jobs命令查询获取)作为参数即可。
3.终止进程执行
当用户在前台执行某个程序时,可以按Ctrl+C组合键强制进行中断。当按Ctrl+C组合键无法终止程序或者需要结束在其它终端的、后台运行的进程时,可以使用专用的进程终止工具kill、killall、pkill。
使用kill命令终止进程时,需要使用进程的PID号作为参数。无特定选项时,kill命令将给进程发出终止信号并正常退出运行,若该进程已经无法响应终止信号,可以结合"-9"选项强行杀死进程。
使用killall命令可以通过进程名来杀死进程。同样也可以结合"-9"选项强制结束进程。
使用pkill命令可以根据进程的名称、运行该进程的用户、进程所在终端等多种属性终止特定的进程。
计划任务管理
1.at一次性任务设置
使用at命令设置的计划任务只在指定的时间点执行一次,有一个前提条件是,对应的atd系统服务必须已经运行。
使用at命令设置计划任务时,在命令行中依次指定计划执行任务的时间、日期作为参数(若只指定时间则表示当天的该时间,若只指定日期则表示该日期的当前时间),确认就将进入"at>"提示符的任务编辑界面,每行设置一条命令,可以一次设置多条命令,最后按Ctrl+D提交任务即可。所设置的命令操作将在计划的时间点被一次执行。
对于已经设置但还尚未执行的计划任务,可以通过atq命令进行查询。
使用atrm命令可以删除指定任务编号的at任务,删除后的at任务将不会被执行。
2.crontab周期性任务设置
使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻设置重复的系统管理任务操作(如定期备份)。对应的系统服务crond必须已经运行。
crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件进行设置。
1)/etc/crontab――系统任务配置文件
在"/etc/crontab"文件中设置的是维护Linux系统所需的任务,一般在系统及程序安装时自动设置,不需要人为的修改。
2)/var/spool/cron/――用户cron任务配置存放目录
由用户自行设置(使用crontab命令)的cron任务将被保存在该目录中,文件名与对应的用户帐号同名。
使用crontab命令管理用户的计划任务
》-e:编辑计划任务列表。
》-u:指定所管理的计划任务属于哪个用户,默认时针对当前用户,一般只有root用户有权限使用此选项。
》-l:列表显示计划任务。
》-r:删除计划任务列表。
执行"crontab-e"后,将打开计划任务编辑界面。
每行格式:分钟小时日期月份星期执行的命令
分钟:0-59之间的任意整数;
小时:0-23之间的任意整数;
日期:1-31之间的任意整数;
月份:1-12之间的任意整数;
星期:0-7之间的任意整数,0或7代表星期日;
命令:可以是普通的命令,也可以是自己编写的脚本。
*:表示取值范围的任意数值。
-:可以表示一个连续的时间范围,如“1-4”表示1、2、3、4。
,:可以表示一个间隔的不连续范围,如“3,4,6,8”。
/:可以用来指定间隔频率,如在日期字段中的“*/3”表示每隔3天。