透過進程的前後台切換方式實現不同應用的切換。
背景:linux啟動一個程式後,切換到背景執行,想繼續在linux操作。
在Linux中,你可以使用以下幾種方法使一個程式在後台啟動並退出,但仍然保持其進程運行:
nohup
和&
:
$ nohup your_program &
使用nohup
指令可以讓程式忽略掛斷訊號(SIGHUP),這樣即使你退出了終端,程式也會繼續運作。 &
符號使程式在背景運行。
ctrl Z
:
#如果你已經在前台啟動了程序,可以使用ctrl z
命令將其移到後台:
$ ./your_program# 运行在前台 $ 按 Ctrl + Z# 将程序暂停,并将其移到后台 $ bg#在后台继续运行程序 $ disown -h# 使程序在你退出终端时仍然运行
screen
:
#screen
是一個在UNIX和Linux系統上運行的終端復用器,它允許使用者在同一台機器上的一個實體終端上啟動多個虛擬終端。
透過建立一個新的會話,你可以在其中執行程序,並且即使退出終端,該會話仍將保持活動狀態。隨後,你可以重新連線到會話來檢視和控製程式的運作。
screen的功能
screen的功能大致有三個:
會話復原
:只要Screen本身沒有終止,在其內部執行的會話都可以恢復。這一點對於遠端登入的使用者特別有用——即使網路連線中斷,使用者也不會失去對已開啟的命令列會話的控制。只要再次登入主機上執行screen -r就可以恢復會話的運作。同樣在暫時離開的時候,也可以執行分離指令detach,在確保裡面的程式正常運作的情況下讓Screen掛起(切換到後台)。這一點和圖形介面下的VNC很相似。 多重視窗
:在Screen環境下,所有的會話都獨立的運行,並擁有各自的編號、輸入、輸出和視窗快取。使用者可以透過快捷鍵在不同的視窗下切換,並且可以自由的重定向各個視窗的輸入和輸出。 會話共用
:Screen可以讓一個或多個使用者從不同終端多次登入一個會話,並共用會話的所有特性(例如可以看到完全相同的輸出)。它同時提供了視窗存取權限的機制,可以對視窗進行密碼保護。 如何使用screen
:安裝 sudo apt install screen
$ screen -S session_name your_program
$ screen -r session_name
如果你想從 screen
會話中退出,但不終止正在執行的程序,你可以按下 Ctrl
A
#,然後按下 # D
。
這將會從 screen
會話中分離,但程式仍在背景執行。
範例:使用secreen開啟多個會話在會話中執行程式。
每個會話相當於一個邏輯終端,可以退出會話,讓程式仍然運作。
$ screen -S appDemo_session ./appDemo.lua # 开启新的会话,并执行appDemo脚本程序 > help Available commands: 1. show 2. exit 3. help 4. run > # 按ctrl+AD 退出会话 [detached from 1546455.appDemo_session] $ screen -r appDemo_session [detached from 1546455.appDemo_session] $ $ $ screen -ls# 查看所有会话 There is a screen on: 1546455.appDemo_session (2024年01月24日 10时01分53秒) (Detached) 1 Socket in /run/screen/S-zsh. $
screen
會話:如果你想結束一個 screen
會話並停止其中的程序,你可以先使用 screen -r [會話名稱或ID]
重新連接到該會話,然後按下Ctrl
C
來終止程式。
接著,你可以用 exit
或按 Ctrl
D
來結束該 screen
會話。
$ screen -S appDemo_session ./appDemo.lua -------------以下在在会话中的逻辑终端显示,退出后会消失 > help Available commands: 1. show 2. exit 3. help 4. run > exit exitCLI ------------- [screen is terminating] $
在同一個 screen
會話中,你可以使用 Ctrl
A
然後再按 #C
來建立一個新的視窗。
每個視窗可以有自己的命令列歷史。要切換窗口,只需按 Ctrl
A
然後按 N
(下一個)或 P
(上一個)。
要關閉窗口,只要按 Ctrl
A
然後按 K
,然後選擇要關閉的視窗。
你可以為視窗命名以方便識別。只要按 Ctrl
A
然後按 A
(重新命名)。輸入新名稱並按回車。
可以按下Ctrl a
,然後按下w
鍵。這將顯示目前screen
會話中的所有視窗列表,包括視窗的編號和名稱。
$ screen -S appDemo_session ./appDemo.lua -------------以下在在会话中的逻辑终端显示,退出后会消失 > help Available commands: 1. show 2. exit 3. help 4. run > $ ls appDemo.lua # 按ctrl+A 然后按K,输入y表示结束当前窗口 Really kill this window [y/n]
在一個會話中建立多個視窗
$ ls appDemo.lua # 按三次ctrl+a,然后按c,创建三个各自独立的窗口,每个窗口有自己的命令行历史 # 然后按 ctrl+a,然后按w查看所有窗口 0$ appDemo.lua1$ bash2-$ bash3*$ bash # 现在相当于一个会话appDemo_session中有四个窗口,需要在四个窗口都exit才能退出该会话
在Unix和Linux系统中,当你使用Ctrl+Z
将一个程序暂停并放到后台时,该程序实际上是被挂起(暂停)了。
为了再次运行这个程序,你可以使用以下方法:
bg
命令可以将挂起的程序放到后台继续运行。bg
fg
命令。fg %1
其中%1
是你想要移到前台的挂起程序的编号。你可以使用jobs
命令查看挂起的程序的编号。
3. jobs:
使用jobs
命令可以列出当前挂起的程序。这些程序的编号可以帮助你确定要使用fg
或bg
命令时应该使用的编号。
jobs -l# 列出所有挂起的程序及其PID
kill
命令。但是,首先确保你真的想要结束它。kill %1
请注意,上述方法主要适用于shell环境中。如果你在图形界面中(如使用X Window System)运行程序,那么你可能需要使用不同的方法来控制程序的运行。
$ ./student ===== 学生信息管理系统 ===== 1. 录入学生信息 2. 显示学生信息 3. 查询学生信息 4. 修改学生信息 5. 删除学生信息 6. 退出 请选择操作: ^Z [1]+已停止 ./student $ bg [1]+ ./student & [1]+已停止 ./student $ jobs -l [1]+ 1545288 停止 (tty 输入) ./student $ ./stu11 Student Information Management System 1. Add Student 2. Display Students 3. Search Student 4. Delete Student 5. Exit Enter your choice: ^Z [2]+已停止 ./stu11 $ jobs -l [1]- 1545288 停止 (tty 输入) ./student [2]+ 1545290 停止./stu11 $
$ ./appDemo.lua > help Available commands: 1. show 2. exit 3. help 4. run > ^Z [2]+已停止 ./appDemo.lua $ jobs -l [1]- 1545480 停止./stu11 [2]+ 1545484 停止./appDemo.lua $ bg [2]+ ./appDemo.lua & $ fg %2 ./appDemo.lua Unknown command. Type 'help' for available commands. > help Available commands: 1. show 2. exit 3. help 4. run > ^Z [2]+已停止 ./appDemo.lua
以上是如何在Linux系統下流暢切換不同的應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!