導航:首頁 > 編程大全 > linux網路進程

linux網路進程

發布時間:2023-03-18 03:14:08

linux系統的進程調度

Linux進程調度

1.調度方式

Linux系統的調度方式基本上採用「 搶占式優先順序 」方式,當進程在用戶模式下運行時,不管它是否自願,核心在一定條件下(如該進程的時間片用完或等待I/O)可以暫時中止其運行,而調度其他進程運行。一旦進程切換到內核模式下運行時,就不受以上限制,而一直運行下去,僅在重新回到用戶模式之前才會發生進程調度。

Linux系統中的調度基本上繼承了UNIX系統的 以優先順序為基礎 的調度。也就是說,核心為系統中每個進程計算出一個優先順序,該優先順序反映了一個進程獲得CPU使用權的資格,即高優先順序的進程優先得到運行。核心從進程就緒隊列中挑選一個優先順序最高的進程,為其分配一個CPU時間片,令其投入運行。在運行過程中,當前進程的優先順序隨時間遞減,這樣就實現了「負反饋」作用,即經過一段時間之後,原來級別較低的進程就相對「提升」了級別,從而有機會得到運行。當所有進程的優先順序都變為0(最低)時,就重新計算一次所有進程的優先順序。

2.調度策略

Linux系統針對不同類別的進程提供了3種不同的調度策略,即SCHED_FIFO、SCHED_RR及SCHED_OTHER。其中,SCHED_FIFO適合於 短實時進程 ,它們對時間性要求比較強,而每次運行所需的時間比較短。一旦這種進程被調度且開始運行,就一直運行到自願讓出CPU或被優先順序更高的進程搶占其執行權為止。

SCHED_RR對應「時間片輪轉法」,適合於每次運行需要 較長時間的實時進程 。一個運行進程分配一個時間片(200 ms),當時間片用完後,CPU被另外進程搶占,而該進程被送回相同優先順序隊列的末尾,核心動態調整用戶態進程的優先順序。這樣,一個進程從創建到完成任務後終止,需要經歷多次反饋循環。當進程再次被調度運行時,它就從上次斷點處開始繼續執行。

SCHED_OTHER是傳統的UNIX調度策略,適合於互動式的 分時進程 。這類進程的優先順序取決於兩個因素:一個是進程剩餘時間配額,如果進程用完了配給的時間,則相應優先順序降到0;另一個是進程的優先數nice,這是從UNIX系統沿襲下來的方法,優先數越小,其優先順序越高。nice的取值范圍是-20 19。用戶可以利用nice命令設定進程的nice值。但一般用戶只能設定正值,從而主動降低其優先順序;只有特權用戶才能把nice的值設置為負數。進程的優先順序就是以上二者之和。

後台命令對應後台進程(又稱後台作業)。後台進程的優先順序低於任何交互(前台)進程的優先順序。所以,只有當系統中當前不存在可運行的交互進程時,才調度後台進程運行。後台進程往往按批處理方式調度運行。

3.調度時機

核心進行進程調度的時機有以下5種情況:

(1)當前進程調用系統調用nanosleep( )或者pause( ),使自己進入睡眠狀態,主動讓出一段時間的CPU的使用權。

(2)進程終止,永久地放棄對CPU的使用。

(3)在時鍾中斷處理程序執行過程中,發現當前進程連續運行的時間過長。

(4)當喚醒一個睡眠進程時,發現被喚醒的進程比當前進程更有資格運行。

(5)一個進程通過執行系統調用來改變調度策略或者降低自身的優先順序(如nice命令),從而引起立即調度。

4.調度演算法

進程調度的演算法應該比較簡單,以便減少頻繁調度時的系統開銷。Linux執行進程調度時,首先查找所有在就緒隊列中的進程,從中選出優先順序最高且在內存的一個進程。如果隊列中有實時進程,那麼實時進程將優先運行。如果最需要運行的進程不是當前進程,那麼當前進程就被掛起,並且保存它的現場—— 所涉及的一切機器狀態,包括程序計數器和CPU寄存器等,然後為選中的進程恢復運行現場。

(二)Linux常用調度命令

· nohup命令

nohup命令的功能是以忽略掛起和退出的方式執行指定的命令。其命令格式是:

nohupcommand[arguments]

其中,command是所要執行的命令,arguments是指定命令的參數。

nohup命令告訴系統,command所代表的命令在執行過程中不受任何結束運行的信號(hangup和quit)的影響。例如,

$ nohup find / -name exam.txt -print>f1 &

find命令在後台運行。在用戶注銷後,它會繼續運行:從根目錄開始,查找名字是exam.txt的文件,結果被定向到文件f1中。

如果用戶沒有對輸出進行重定向,則輸出被附加到當前目錄的nohup.out文件中。如果用戶在當前目錄中不具備寫許可權,則輸出被定向到$HOME/nohup.out 中。

· at命令

at命令允許指定命令執行的時間。at命令的常用形式是:

attimecommand

其中,time是指定命令command在將來執行時的時間和日期。時間的指定方法有多種,用戶可以使用絕對時間,也可以用相對時間。該指定命令將以作業形式在後台運行。例如:

$ at 15:00 Oct 20

回車後進入接收方式,接著鍵入以下命令:

mail -s "Happy Birthday!" liuzheny

按下D鍵,屏幕顯示:

job 862960800.a at Wed Oct 20 15:00:00 CST 1999

$

表明建立了一個作業,其作業ID號是862960800.a,運行作業的時間是1999年10月20日下午3:00,給liuzheny發一條標題為「Happy Birthday!」(生日快樂)的空白郵件。

利用 at-l 可以列出當前at隊列中所有的作業。

利用 at-r 可以刪除指定的作業。這些作業以前由at或batch命令調度。例如,

at-r862960797.a

將刪除作業ID號是862960797.a的作業。其一般使用形式是:

at-rjob_id

注意,結尾是.a的作業ID號,表示這個作業是由at命令提交的;結尾是.b的作業ID號,表示這個作業是由batch命令提交的。

· batch命令

batch命令不帶任何參數,它提交的作業的優先順序比at命令提交的作業的優先順序低。batch無法指定作業運行的時間。實際運行時間要看系統中已經提交的作業數量。如果系統中優先順序較高的作業比較多,那麼,batch提交的作業則需要等待;如果系統空閑,則運行batch提交的作業。例如,

$ batch

回車後進入接收方式,接著鍵入命令:

find / -name exam.txt -print

按下D。退出接收方式,屏幕顯示:

job 862961540.b at Thu Nov 18 14:30:00 CST 1999

表示find命令被batch作為一個作業提交給系統,作業ID號是862961540.b。如果系統當前空閑,這個作業被立即執行,其結果同樣作為郵件發送給用戶。

· jobs命令

jobs命令用來顯示當前shell下正在運行哪些作業(即後台作業)。例如:

$ jobs

[2] + Running tar tv3 *&

[1] - Running find / -name README -print > logfile &

$

其中,第一列方括弧中的數字表示作業序號,它是由當前運行的shell分配的,而不是由操作系統統一分配的。在當前shell環境下,第一個後台作業的作業號為1,第二個作業的作業號為2,等等。

第二列中的「 」號表示相應作業的優先順序比「-」號對應作業的優先順序高。

第三列表明作業狀態,是否為運行、中斷、等待輸入或停止等。

最後列出的是創建當前這個作業所對應的命令行。

利用 jobs-l 形式,可以在作業號後顯示出相應進程的PID。如果想只顯示相應進程的PID,不顯示其它信息,則使用 jobs-p 形式。

· fg命令

fg命令把指定的後台作業移到前台。其使用格式是:

fg [job…]

其中,參數job是一個或多個進程的PID,或者是命令名稱或者作業號(前面要帶有一個「%」號)。例如:

$ jobs

[2] + Running tar tv3 *&

[1] - Running find / -name README -print > logfile&

$ fg %find

find / -name README -print > logfile

注意,顯示的命令行末尾沒有「&」符號。下面命令能產生同樣的效果:

$ fg %1

這樣,find命令對應的進程就在前台執行。當後台只有一個作業時,鍵入不帶參數的fg命令,就能使相應進程移到前台。當有兩個或更多的後台作業時,鍵入不帶參數的fg,就把最後進入後台的進程首先移到前台。

· bg命令

bg命令可以把前台進程換到後台執行。其使用格式是:

bg [job…]

其中,job是一個或多個進程的PID、命令名稱或者作業號,在參數前要帶「%」號。例如,在cc(C編譯命令)命令執行過程中,按下Z鍵,使這個作業掛起。然後鍵入以下命令:

$ bg %cc

該掛起的作業在後台重新開始執行。

⑵ 如何查看linux哪個進程佔用網路

查看linux進程佔用埠步驟如下:

  1. lsof -i 用以顯示符合條件的進程情況,lsof(list open files)是一個列出內當前系統容打開文件的工具。以root用戶來執行lsof -i命令,如下圖


    ⑶ linux中怎樣查看佔用8080埠的進程

    1,使用lsof命令,使用IPv4協議的區域網:執行命令答塌: 宴舉輪lsof -Pnl +M -i4|grep 8080
    輸出結果: java 1419 1401 IPv4 6793357

    2,先使用netstat命令,再用 ps命令。
    執行命令:netstat -anp|grep 8080
    輸出結果:tcp 0 0 :::8080

    執行命令: ps -ef | grep 12006輸出結果: root 12886 12851 0 Dec09 /home/bjca/bea/jdk160_05/bin/java -client -Xms256m -Xmx512m -XX:CompileThreshold=8000 -XX:PermSize=48m -XX:MaxPermSize=128m......

    ⑷ Linux系統服務進程

    服務名稱 功能 默認 建議 備注說明
    NetworkManager 用於自動連接網路,常用在Laptop上 開啟 關閉 對伺服器無用
    abrt-ccpp 開啟 自定 對伺服器無用
    abrt-oops 開啟 自定 對伺服器無用
    abrtd 開啟 自定 對伺服器無用
    acpid 電源的開關等檢測管理,常用在Laptop上 開啟 自定 對伺服器無用
    atd 在指定時間執行命令 開啟 關閉 如果用crond,則可關閉它
    auditd 審核守護進程 開啟 開啟 如果用selinux,需要開啟它

    autofs 文件系統自動載入和卸載 開啟 自定 只在需要時開啟它,可以關閉
    avahi-daemon 本地網路服務查找 開啟 關閉 對伺服器無用
    bluetooth 藍牙無線通訊 開啟 關閉 對伺服器無用
    certmonger 關閉 關閉
    cpuspeed 調節cpu速度用來省電,常用在Laptop上 開啟 關閉 對伺服器無用
    crond 計劃任務管理 開啟 開啟 常用,開啟
    cups 通用unix列印服務
    開啟 關閉 對伺服器無用
    dnsmasq dns cache 關閉 關閉 DNS緩存服務,無用
    firstboot 系統安裝後初始設定 關閉 關閉
    haldaemon 硬體信息收集服務 開啟 開啟
    ip6tables ipv6防火牆 開啟 關閉 用到ipv6網路的就用,一般關閉
    iptables
    ipv4防火牆 開啟 開啟 ipv4防火牆服務
    irqbalance cpu負載均衡 開啟 自定 多核cup需要
    kmp 硬體變動檢測 關閉 關閉 伺服器無用
    lvm2-monitor lvm監視 開啟 自定 如果使用LVM邏輯卷管理就開啟
    matahari-broker 關閉 關閉 此服務不清楚,我關閉
    matahari-host 關閉 關閉 此服務不清楚,我關閉
    matahari-network 關團姿禪閉 關閉 此服務不清楚,我關閉
    matahari-service 關閉 關閉 此服務不清楚,我關閉
    matahari-sysconfig 關閉 關閉 此服務不清楚,我關閉
    mdmonitor 軟raid監視 開啟 自定
    messagebus 負責在各個系統進程之間傳遞消息 開啟 開啟 如停用,haldaemon啟動會失敗
    netconsole 關閉 關閉
    netfs 系統啟動時自動掛載網路文件系統 開啟 關閉 如果使用塌塵nfs服務,就開啟
    network 系統啟動時激活所有網路介面 開啟 開啟 網路基礎服務,必需!
    nfs 網路文件系統 關閉 關閉 nfs文件服務,用到就開啟
    nfslock nfs相關 開啟 關閉 nfs相關服務,用到就開啟
    ntpd 自動對時工具 關閉 自定 網路對時服務,用到就開啟
    ntpdate 自動對時工具 關閉 關閉
    oddjobd 與D-BUS相關 關閉 關閉
    portreserve RPC 服務相關 開啟 自定 可以關閉
    postfix 替代sendmail的郵件伺服器 開啟 自定 如果無郵件服務,可關閉
    psacct 負荷檢測 關閉 關閉 可以關閉
    qpidd 消息通信 開啟 開啟
    quota_nld 關閉 關閉 可以關閉
    rdisc 自動檢測路由器 關閉 關閉
    restorecond selinux相關 關閉 關閉 如果開啟了selinux,就需開啟
    rpcbind 開啟 開啟 關鍵的基礎服務,nfs服務和桌面環境都依賴此服務!相當於CentOS 5.x裡面的portmap服務。
    rpcgssd NFS相關 開冊消啟 關閉 NFS相關服務,可選
    rpcidmapd RPC name to UID/GID mapper 開啟 關閉 NFS相關服務,可選
    rpcsvcgssd NFS相關 關閉 關閉 NFS相關服務,可選
    rsyslog 提供系統的登錄檔案記錄 開啟 開啟 系統日誌關鍵服務,必需!
    saslauthd sasl認證服務相關 關閉 關閉
    smartd 硬碟自動檢測守護進程 關閉 關閉
    spice-vdagentd 開啟 開啟
    sshd ssh服務端,可提供安全的shell登錄
    開啟 開啟 SSH遠程登錄服務,必需!
    sssd 關閉 關閉
    sysstat 開啟 開啟 一組系統監控工具的服務,常用
    udev-post 設備管理系統 開啟 開啟
    wdaemon 關閉 關閉
    wpa_supplicant 無線認證相關 關閉 關閉
    ypbind network information service客戶端 關閉 關

    ⑸ linux為什麼單進程網路跑不滿

    linux單進程網路不能滿負荷運行的原因主要有以下幾點迅扒:
    1、Linux內核限制了單個進程擁有的最大文件描述符數量,導致單進程無法處理過多的連接;
    2、Linux網路子系統使用了單槽接收灶巧隊列,這意味著每個CPU核心只能處理一個網路中斷,當網路中斷數量較多時,單CPU核心就無法滿足處理能力;
    3、Linux網路子系統會受到內核版本、硬體設備驅動程序和系統參數的影響,當這些參數不合理時,會影響網路性能,從畝辯昌而降低單進程的網路負載能力。

    ⑹ linux通過埠查看進程信息的兩種方法

    你為什麼會近視?為了淡看世間事,所以才模糊了雙眼。

    上一篇: linux命令-文件和目錄操作命令

    lsof解釋( 網路 ): lsof(如御list open files)是一個列出當前系統打開茄茄文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網路連接和硬體。

    格式: lsof -i

    格式: lsof -i :埠號

    Netstat( 網路 )是控制台命令,是一個監控TCP/IP網路的非常有用的工具,它可以顯示路由表、實際的網路連接以及每一個網路介面設備的狀態信息。Netstat用於顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用於檢驗本機各埠的網路連接情況。

    格式: netstat -tunlp | grep 埠號

    格式: netstat -anp | grep 埠號

    格式: netstat -nultp

    如果感覺本文對您有幫助可以點個贊哦

    本文僅供交流學習,請勿用於非法途徑

    僅渣納岩是個人意見,如有想法,歡迎留言

    ⑺ linux進程數限制導致無法連接服務

    器亂埋運

    解決方法:

    1、檢查伺服器是否正常運行,如果服務嘩梁器沒有正常運行,則需要重啟伺服器。

    2、檢查伺服器的系統資源,如內存、CPU等,確保伺服器的系統資源充足,以支持更多的連接。

    3、檢查Linux系統的進程數限制,如果進程數限制過低,可以通過修改/etc/security/limits.conf文件來提高進程數的限制。

    4、檢查伺服器的網路配液鏈置,如果伺服器的網路配置不正確,可能會導致伺服器無法接受連接。

    ⑻ linux進程和程序的區別與聯系

    進程通常是指運行中的程序(當然由於操作系統任務調度的關系,不一定當前回處於運行態,只是說已答載入到內存),只是習慣上的叫法而已。 可以通過ps命令查看進程。 而程序就只是文件的概念(代碼文件或編譯出的可執行文件)。

    ⑼ Linux進程與線程的區別和聯系

    進程中可包含多個線程,最少1個,進程可控制進程內線程的運行暫停及結束,線程可共享進程全局變數,進程與進程是單獨個體,相互不能直接訪問各自線程及全局變數

    ⑽ Linux進程一般可以分為哪三類

    進程是正在執行的一個程序或命令,每個進程都是一個運行的實體,都有自己的地址空間,並佔用一定的系統資源。程序一旦運行就是進程。

    進程可以看成程序執行的一個實例。進程是系統資源分配的獨立實體,每個進程都擁有獨立的地址空間。一個進程無法訪問另一個進程的變數和數據結構,如果想讓一個進程訪問另一個進程的資源,需要使用進程間通信,比如管道,文件,套接字等。

    Linux中進程分為以下三類:

    ①交互進程:由一個shell啟動的進程,交互進程既可以在前台運行,也可以在後台運行。

    ②批處理進程:這種進程和終端沒有聯系,是一個進程序列。

    ③監控進程:也稱守護進程,是一個在後台運行且不受任何終端控制的特殊進程,用於執行特定的系統任務。

    進程的狀態:

    ①可運行狀態:此時進程正在運行或者頌野正在運行隊列中等待准備運行。

    ②等待狀態:此時進程在等待一個事件的發生或某種系統資源。在Linux系統中等待狀態又細分為兩種等待狀態:可中斷的等待狀態和缺櫻洞不可中斷的等待狀態。

    ③暫停狀態:處於暫停狀態的進程被暫停運行。

    ④僵死狀態:每個進程在運行結束後伏枯都會處於僵死狀態,等待父進程調用進而釋放系統資源,處於該狀態的進程已經運行結束,但是它的父進程還沒有釋放其系統資源。

閱讀全文

與linux網路進程相關的資料

熱點內容
javavoid參數 瀏覽:829
如何讓編程具有記憶功能 瀏覽:435
javamail發送帶附件的郵件 瀏覽:173
微信分享文件到其他軟體 瀏覽:682
微信對話文件夾在哪 瀏覽:287
qq頭像歐美范街頭男生 瀏覽:321
毛孔app 瀏覽:880
照片級渲染教程 瀏覽:304
目錄中的文件夾有什麼用 瀏覽:177
車載u盤文件掃描 瀏覽:410
稻殼文檔怎樣改文件名 瀏覽:620
cad怎麼把文件存成模板 瀏覽:250
編程設計用什麼筆記本流暢 瀏覽:584
電腦突然打開文件很慢 瀏覽:501
數據線一般是多少瓦的 瀏覽:314
javawebjsp簡單項目實例 瀏覽:930
u盤lost文件夾刪除不了 瀏覽:754
工具使用如何幫助提升工作效率 瀏覽:773
什麼叫解壓縮下載的文件 瀏覽:703
js監聽瀏覽器窗口移動 瀏覽:225

友情鏈接