Linxu中命令的執行(前臺、後臺)

距離上一篇文章已經有半個月的時間了,感覺這段時間對不起自己呀。因爲現在我開始學習Java了,以後有時間和大家交流一個學習經驗。

今天我要分享的知識是如何建立進程。在Linux中我們應該如何進程呢,讓我們好好來探究一下吧。

示例一:

這個例子就是建立了一個後臺進程

[root@instructor Desktop]# ping 127.0.0.1&
[1] 16885
[root@instructor Desktop]# PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.353 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=1.05 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.065 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.069 ms
64 bytes from 127.0.0.1: icmp_seq=5 ttl=64 time=0.066 ms
64 bytes from 127.0.0.1: icmp_seq=6 ttl=64 time=0.146 ms
fg
ping 127.0.0.1

64 bytes from 127.0.0.1: icmp_seq=7 ttl=64 time=0.067 ms
64 bytes from 127.0.0.1: icmp_seq=8 ttl=64 time=0.070 ms
64 bytes from 127.0.0.1: icmp_seq=9 ttl=64 time=0.069 ms
64 bytes from 127.0.0.1: icmp_seq=10 ttl=64 time=0.072 ms
^C
--- 127.0.0.1 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 9471ms
rtt min/avg/max/mdev = 0.065/0.202/1.050/0.295 ms

[root@instructor Desktop]# 

其實在Linux中有兩種建立進程的方式,一個是在前臺運行程序,另一個是在後臺運行程序。

一、在前臺運行程序,就是命令的正常執行,不需要添加任何符號或命名。

示例二:

[root@instructor Desktop]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.102 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.070 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.071 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.082 ms
^C
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3401ms
rtt min/avg/max/mdev = 0.070/0.081/0.102/0.014 ms

[root@instructor Desktop]# 

二、後臺運行進程

在文章的開頭我們舉了第一個例子,我們得知通過在運行的指令末尾添加”&“符號可以讓命令在後臺運行

示例三:

[root@instructor Desktop]# ping 192.168.0.254&
[1] 17077
[root@instructor Desktop]# PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data.

64 bytes from 192.168.0.254: icmp_seq=1 ttl=64 time=0.205 ms
64 bytes from 192.168.0.254: icmp_seq=2 ttl=64 time=0.112 ms
64 bytes from 192.168.0.254: icmp_seq=3 ttl=64 time=0.100 ms
64 bytes from 192.168.0.254: icmp_seq=4 ttl=64 time=0.065 ms
^C
[root@instructor Desktop]# 64 bytes from 192.168.0.254: icmp_seq=5 ttl=64 time=0.107 ms

64 bytes from 192.168.0.254: icmp_seq=6 ttl=64 time=0.131 ms
64 bytes from 192.168.0.254: icmp_seq=7 ttl=64 time=0.110 ms
64 bytes from 192.168.0.254: icmp_seq=8 ttl=64 time=0.980 ms

64 bytes from 192.168.0.254: icmp_seq=9 ttl=64 time=0.111 ms

fg
ping 192.168.0.254

64 bytes from 192.168.0.254: icmp_seq=10 ttl=64 time=0.100 ms
64 bytes from 192.168.0.254: icmp_seq=11 ttl=64 time=0.110 ms
64 bytes from 192.168.0.254: icmp_seq=12 ttl=64 time=0.070 ms
^C
--- 192.168.0.254 ping statistics ---
12 packets transmitted, 12 received, 0% packet loss, time 11461ms
rtt min/avg/max/mdev = 0.065/0.183/0.980/0.242 ms

[root@instructor Desktop]# 

三、關於後臺進程控制的命令和快捷鍵

1、 Ctrl-Z

  Ctrl-Z可以將一個正在前臺執行的命令放到後臺,並且暫停

2、bg

bg將一個在後臺暫停的命令,變成繼續執行

如果後臺中有多個命令,可以用bg %jobnumber將選中的命令調出,%jobnumber是通過jobs命令查到的後臺正在執行的命令的序號(不是pid)

3、fg

如果想把它調回到前臺運行,可以用

4、jobs
查看當前有多少在後臺運行的命令

示例四:

假設你發現前臺運行的一個程序需要很長的時間,但是需要幹其他的事情,你就可以用 Ctrl-Z ,掛起這個程序,然後可以看到系統提示(方括號中的是作業號):
[1]+ Stopped /root/bin/rsync.sh
然後我們可以把程序調度到後臺執行:(bg 後面的數字爲作業號)
#bg 1
[1]+ /root/bin/rsync.sh &
用 jobs 命令查看正在運行的任務:
#jobs
[1]+ Running /root/bin/rsync.sh &
如果想把它調回到前臺運行,可以用
#fg 1
/root/bin/rsync.sh
這樣,你在控制檯上就只能等待這個任務完成了。

fg、bg、jobs、&、ctrl + z都是跟系統任務有關的,雖然現在基本上不怎麼需要用到這些命令,但學會了也是很實用的







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章