小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
作为一个写Java的,无论是自己面试还是面试别人,可能都会碰到一个简单的问题,就是什么是进程什么是线程,区别是什么?很多时候只需要回答到进程是操作系统的最小执行单位即可,毕竟是做应用层开发的。今天就来简单介绍一下进程在linux系统的含义和一些简单的操作命令。
现代操作系统都是多进程的,当系统启动时,首先会运行一个叫init的程序,然后这个程序会依次运行其他init脚本(一般位于/etc下面),慢慢的启动所有的系统服务,许多服务都是以守护进程的形式运行,即这个程序不提供任何用户接口,用户无法直接操作它。操组系统内核会维护每一个进程的运行信息,给每一个进程分配一个数字ID,这是我们经常提到的PID,init程序的PID永远是1。那么有哪些命令可以操作各种进程呢?
查看进程
ps
命令,一般很少直接输入ps,因为这会列出所有我们想要的和不想要的进程,一般我们会搭配grep来精确寻找:
ps aux | grep java
aux会列出线程非常详细的运行信息。
top
命令,用来查看cpu的使用排行榜,由高到低。
控制进程
&
符号,有时候我们执行完一个命令后不想等待,想直接做别的事情,可以在命令结束时加这样一个符号,比如:
xlogo &
[1] 28236
控制台会直接返回一个该程序的进程id。如果不想让这个程序在后台执行,想让它回到前台怎么办呢?
➜ ~ jobs
[1]+ Running xlogo &
➜ ~ fg %1
xlogo
首先用jobs查看所有的后台任务,然后用fg命令跟上任务的序号,序号前加一个%即可。
停止进程
kill
命令,用法就是kill PID
kill 28236