因为用串口连接开发板,本来可以用网线连接起来,然后 ssh 登录的,但是为了进行 gsm 模块的网络测试,拔了网线就不太方便了,所以就找了一个方法,方便在一个窗口内执行多个任务。
说白了,这个方法就是用几个命令和常用的操作结合起来的。
1.1 后台执行 -- &
在命令后面空格加上 &
符号,就可以让命令后台执行了,执行之后会返回一个 序号+pid
(不通系统有区别),多开后台的话一般从 1 自增:
[root@ ~]# find / -iname okjj &
[1] 7124
[root@ ~]#
1.2 Ctrl+Z 后台(进程暂停)
如果此时进程正在运行,可以直接 Ctrl+Z
将进程挂起:
[root@ ~]# ping baidu.com
PING baidu.com (123.125.114.144) 56(84) bytes of data.
64 bytes from 123.125.114.144: icmp_seq=1 ttl=49 time=43.2 ms
64 bytes from 123.125.114.144: icmp_seq=2 ttl=49 time=43.1 ms
64 bytes from 123.125.114.144: icmp_seq=3 ttl=49 time=43.0 ms
^Z
[1]+ 已停止 ping baidu.com
[root@ ~]#
2 列出所有后台进程 -- jobs
当你有太多的后台进程,但忘记了他们的序号,可以利用命令 jobs
列出所有后台进程(只列出用户置与后台的进程):
[root@ ~]# jobs
[1]+ 已停止 ping baidu.com
3 使后台的挂起进程继续运行 -- bg
如果你是用 Ctrl+Z
将进程转移到后台,进程会暂停,这时只要利用 bg %num
就可以把序号为num的进程继续运行起来:
[root@ ~]# bg %1
[1]+ ping baidu.com &
[root@ ~]# 64 bytes from 123.125.114.144: icmp_seq=4 ttl=49 time=43.3 ms
64 bytes from 123.125.114.144: icmp_seq=5 ttl=49 time=43.1 ms
4 将后台进程转到前台运行 -- fg
利用命令 fg
可以把后台命令转到前台运行,并且以挂起的进程会继续运行:
[root@ ~]# fg %1
ping baidu.com
64 bytes from 123.125.114.144: icmp_seq=6 ttl=49 time=43.2 ms
64 bytes from 123.125.114.144: icmp_seq=7 ttl=49 time=43.3 ms
5 结束进程
如果你想结束某个进程,可以将其转为前台再操作,或者直接 kill 掉就行了。
6 ps 进程状态
ps 可以列出进程的状态,当进程被后台挂起时,它的状态是 T.
ps aux 或 lax 输出的解释:
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS 驻留中页的数量;
TTY 终端ID
STAT 进程状态(有以下几种):
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程(从来没见过);
Z 僵尸进程;
刚才的 ping 命令, T 就代表是挂起的程序,没有在运行:
[root@ ~]# ps aux | grep ping
root 12514 0.0 0.0 14948 1832 pts/30 T 18:02 0:00 ping baidu.com
在利用 &
后台运行一个,S 其实在这里不能说是休眠,只是在后台运行:
[root@ ~]# ping csdn.net &
[2] 13150
一堆的ping输出....
[root@ ~]# ps aux | grep ping
root 12514 0.0 0.0 14948 1832 pts/30 T 18:02 0:00 ping baidu.com
root 13150 0.0 0.0 14948 1824 pts/30 S 18:05 0:00 ping csdn.net