如何在Linux系統下流暢切換不同的應用

王林
發布: 2024-02-19 15:00:09
轉載
366 人瀏覽過

透過進程的前後台切換方式實現不同應用的切換。

背景:linux啟動一個程式後,切換到背景執行,想繼續在linux操作。

在Linux中,你可以使用以下幾種方法使一個程式在後台啟動並退出,但仍然保持其進程運行:

如何在Linux系統下流暢切換不同的應用

#一、Linux啟動一個程式在背景執行

#1. 使用nohup&

$ nohup your_program &
登入後複製

使用nohup指令可以讓程式忽略掛斷訊號(SIGHUP),這樣即使你退出了終端,程式也會繼續運作。 &符號使程式在背景運行。

2. 使用ctrl Z

#如果你已經在前台啟動了程序,可以使用ctrl z命令將其移到後台:

$ ./your_program# 运行在前台
$ 按 Ctrl + Z# 将程序暂停,并将其移到后台 
$ bg#在后台继续运行程序
$ disown -h# 使程序在你退出终端时仍然运行
登入後複製

3.使用screen

#screen是一個在UNIX和Linux系統上運行的終端復用器,它允許使用者在同一台機器上的一個實體終端上啟動多個虛擬終端。

透過建立一個新的會話,你可以在其中執行程序,並且即使退出終端,該會話仍將保持活動狀態。隨後,你可以重新連線到會話來檢視和控製程式的運作。

screen的功能

screen的功能大致有三個:

  • 會話復原:只要Screen本身沒有終止,在其內部執行的會話都可以恢復。這一點對於遠端登入的使用者特別有用——即使網路連線中斷,使用者也不會失去對已開啟的命令列會話的控制。只要再次登入主機上執行screen -r就可以恢復會話的運作。同樣在暫時離開的時候,也可以執行分離指令detach,在確保裡面的程式正常運作的情況下讓Screen掛起(切換到後台)。這一點和圖形介面下的VNC很相似。
  • 多重視窗:在Screen環境下,所有的會話都獨立的運行,並擁有各自的編號、輸入、輸出和視窗快取。使用者可以透過快捷鍵在不同的視窗下切換,並且可以自由的重定向各個視窗的輸入和輸出。
  • 會話共用:Screen可以讓一個或多個使用者從不同終端多次登入一個會話,並共用會話的所有特性(例如可以看到完全相同的輸出)。它同時提供了視窗存取權限的機制,可以對視窗進行密碼保護。

如何使用screen :安裝 sudo apt install screen

3.1 建立會話

$ screen -S session_name your_program
登入後複製

3.2 若要重新連線到此會話:

$ screen -r session_name
登入後複製

3.3 中途退出會話,但程式繼續運行:

如果你想從 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.
$
登入後複製

3.4 結束一個 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]
$
登入後複製

3.5 建立多個視窗:

在同一個 screen 會話中,你可以使用 Ctrl   A 然後再按 #C 來建立一個新的視窗。

每個視窗可以有自己的命令列歷史。要切換窗口,只需按 Ctrl   A 然後按 N(下一個)或 P(上一個)。

要關閉窗口,只要按 Ctrl   A 然後按 K,然後選擇要關閉的視窗。

3.6 命名視窗:

你可以為視窗命名以方便識別。只要按 Ctrl   A 然後按 A(重新命名)。輸入新名稱並按回車。

3.7 查看所有窗口,

可以按下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才能退出该会话
登入後複製

二、ctrl+Z停止了进程之后,怎么再进入该程序?

在Unix和Linux系统中,当你使用Ctrl+Z将一个程序暂停并放到后台时,该程序实际上是被挂起(暂停)了。

为了再次运行这个程序,你可以使用以下方法:

  • bg (Background) :使用bg命令可以将挂起的程序放到后台继续运行。
  • bg
    登入後複製
  • fg (Foreground) :如果你想要将程序重新移到前台,可以使用fg命令。
  • fg %1
    登入後複製

    其中%1是你想要移到前台的挂起程序的编号。你可以使用jobs命令查看挂起的程序的编号。

    3. jobs:

    使用jobs命令可以列出当前挂起的程序。这些程序的编号可以帮助你确定要使用fgbg命令时应该使用的编号。

    jobs -l# 列出所有挂起的程序及其PID
    登入後複製
  • kill:如果你想要结束一个挂起的程序,可以使用kill命令。但是,首先确保你真的想要结束它。
  • kill %1
    登入後複製

    请注意,上述方法主要适用于shell环境中。如果你在图形界面中(如使用X Window System)运行程序,那么你可能需要使用不同的方法来控制程序的运行。

    三、综合example示范

    $ ./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中文網其他相關文章!

    相關標籤:
    來源:mryunwei.com
    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡[email protected]
    熱門教學
    更多>
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!