Linux任務的前後臺管理
我們知道,Linux 是一個多工的作業系統,也就是說,在同一時間,系統可以執行多個任務。在帶介面的 Linux 發行版下,我們可以很輕鬆透過滑鼠來進行多工的切換。但是,在終端下,操作幾乎是脫離滑鼠的,如何進行任務的前後臺管理呢?
對於任務的管理,我們一般有如下幾個需求:
將程式切換到後臺
將程式切換到前臺
檢視後臺任務
終止後臺任務
為了演示這幾個需求,我們搬出偉大的 hello world 程式:
#include <stdio.h>
int main()
{
while (1) {
printf("hello world!\n");
sleep(1);
}
}
這個程式每隔 1s 就會輸出一句 hello world 。為了後面的演示,將它編譯並複製多份樣本:hello1, hello2, hello3。
讓程式在後臺執行,我們第一時間想到的就是 &
命令。我們可以先在後臺執行這三個程式。
[alvin@VM_0_16_centos test]$ ./hello1 > test1.txt &
[1] 1788
[alvin@VM_0_16_centos test]$ ./hello2 > test2.txt &
[2] 1801
[alvin@VM_0_16_centos test]$ ./hello3 > test3.txt &
[3] 1844
現在有三個樣本在後臺跑了。我們如何檢視這幾個後臺任務呢?可以使用 jobs
命令。
[alvin@VM_0_16_centos test]$ jobs -l
[1] 1788 Running ./hello1 > test1.txt &
[2]- 1801 Running ./hello2 > test2.txt &
[3]+ 1844 Running ./hello3 > test3.txt &
如果我們想把 hello2 調至前臺執行,我們可以這樣操作:
[alvin@VM_0_16_centos test]$ fg %2
./hello2 > test2.txt
其中,%後面跟的是後臺任務的序列,而不是程式ID。如果只有 fg 命令( bg 命令也一樣),而不跟引數,那麼將操作的是後臺任務列表裡的第一個任務,專業名詞叫 當前任務
。
我們會發現,這時程式會一直卡在終端。這時,我們可以使用 ctrl+z
將它再次切到後臺執行。
^Z
[2]+ Stopped ./hello2 > test2.txt
[alvin@VM_0_16_centos test]$ jobs -l
[1] 1788 Running ./hello1 > test1.txt &
[2]+ 1801 Stopped ./hello2 > test2.txt
[3]- 1844 Running ./hello3 > test3.txt &
但是,我們會發現,test2 程式變成了 stopped 的狀態,我們也可以在後臺程式列表裡看到它的狀態。這也是 ctrl+z
命令的特點:將程式切換到後臺,並停止執行。
如果我們想讓它恢復執行,我們就可以使用 bg
命令了。
[alvin@VM_0_16_centos test]$ bg %2
[2]+ ./hello2 > test2.txt &
[alvin@VM_0_16_centos test]$ jobs -l
[1] 1788 Running ./hello1 > test1.txt &
[2]- 1801 Running ./hello2 > test2.txt &
[3]+ 1844 Running ./hello3 > test3.txt &
如果我們想殺死某個後臺程式,我們可以使用 kill
命令。kill 命令的用法有兩種:
kill pid
kill %N
例如,我們要殺死 hello2 程式的話,可以這樣操作:
1. kill 1801
2. kill %2
執行完畢之後,它的狀態將變成 terminated
狀態:
[alvin@VM_0_16_centos test]$ kill 1801
[alvin@VM_0_16_centos test]$ jobs -l
[1] 1788 Running ./hello1 > test1.txt &
[2]- 1801 Terminated ./hello2 > test2.txt
[3]+ 1844 Running ./hello3 > test3.txt &
前臺、後臺任務確實可以給日常操作帶來方便。因為,我們在日常操作中肯定會遇到同一時間要進行多個操作。這個時候如果不使用前臺任務和後臺任務,那麼將要花費很多時間。熟練運用前臺和後臺任務能達到事半功倍。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69908604/viewspace-2636301/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android Jetpack - 使用 WorkManager 管理後臺任務AndroidJetpack
- Android Jetpack – 使用 WorkManager 管理後臺任務AndroidJetpack
- 後臺任務
- linux後臺執行和關閉、檢視後臺任務Linux
- 打通Vue開發前後臺業務的任督二脈Vue
- HarmonyOS 後臺任務管理開發指南上線!
- Linux 任務計劃管理Linux
- iOS App 後臺任務的坑iOSAPP
- 大資料開發-linux後臺執行,關閉,檢視後臺任務大資料Linux
- 開源任務懸賞接單平臺前後端開發搭建後端
- 高效管理 Android 前臺服務Android
- Linux常見的軟體包管理任務Linux
- 詳解linux後臺、前臺執行程序Linux行程
- Android後臺任務(HandlerThread、AsyncTask、IntentService)AndroidthreadIntent
- 使用screen後臺執行任務
- netcore後臺任務注意事項NetCore
- 基於 Hyperf 開發的前後分離管理後臺
- Linux系統管理之定時任務Linux
- 國外排名前 15 的 Vue 後臺管理模板Vue
- php後臺定時執行任務PHP
- Linux 任務後臺執行軟體【即:終端複用器】之---screenLinux
- 一文說通Dotnet Core的後臺任務
- 節能型後臺資料同步器:HarmonyOS Next的智慧延遲任務管理
- 如何使用WorkManager執行後臺任務(上)
- 如何在 Flutter 建立一個後臺任務Flutter
- 今天推薦,今年排名前 15 的 Vue 後臺管理模板Vue
- Android開發 - Runnable 類任務介面定義與後臺任務待辦解析Android
- 例項後臺執行訓練或任務
- 073基於SSM酒店管理系統(前後臺)SSM
- 仿掘金前臺 vue 服務端渲染(ssr)後臺 react (spa) 後臺服務是 koa 的一個專案Vue服務端React
- 分類管理的允許前後臺釋出怎麼用
- dotnet core系列之Background tasks with hosted services (後臺任務)
- .NET寶藏API之:IHostedService,後臺任務執行API
- Linux 定時任務Linux
- Linux | 定時任務Linux
- 20181206 例行任務管理
- 定時任務管理
- Linux 執行定時任務後,Laravel 專案報錯LinuxLaravel