Linux執行程式時,程式程序莫名退出(被殺死)

2021-10-16 04:26:33 字數 1428 閱讀 7545

1)linux程式程序被殺,日誌突然中止,可以考慮是否因為程式占用記憶體過高,導致系統記憶體不足,為避免系統崩潰,系統尋找記憶體占用最大的程序kill掉

2)也可能存在執行程式時沒有使用nohup ( no hang up) command &將程序提交到後台執行,一旦控制台關閉,任務程序就會停止執行

3)補充 ctrl+c ctrl + z 區別

1)排查是否因為程式問題導致系統記憶體占用過高而被系統主動殺死,通過檢視linux 系統日誌的方式檢視。

# 通過以下三種命令檢視系統是否主動殺死程式程序

dmesg

|egrep -i -b100 'killed process'

## 或:

egrep -i 'killed process' /var/log/messages

egrep -i -r 'killed process' /var/log

## 或:

journalctl -xb |

egrep -i 'killed process'

2)對應沒有使用nohup command &的情況

排查在linux環境下執行程式時有沒有使用nohup command &命令,將程序提交linux後台中執行,並且在使用nohup命令時,退出伺服器終端連線客戶端時有沒有使用 exit命令正常退出

# nohup命令的正常使用語法,&將程序提交到後台執行,nohup表示退出賬號後程序進行執行,不掛起

nohup

command

&

1)對於程式占用系統記憶體太大,導致系統主動殺死程式程序的情況,應該主動排查程式中**是否存在迭代,迴圈或者記憶體洩露的可能,從**的角度對程式重構。

2)對於沒有正確使用nohup命令導致的程序異常退出,參考如下命令正確的使用nohup將程式放linux後台中執行

『nohup』 表示不掛起, 即正常退出終端連線也不掛起程序。

『command』 表示要執行的後台程序 例如:sh run.sh

『>』 表示重定向 表示將 >左邊的訊息定向輸出》右邊的某個檔案中 例如以下命令將標出輸出重定向到out.log檔案中

『2>&1』 是將標準出錯重定向到標準輸出, 2 >代表標準出錯定向 ,&1代表標準輸出

『&』 表示將程式程序提交到後台執行 ,但只使用& 螢幕還是會列印程式相關日誌

# 使用如下命令後台執行程式,out.log為程式日誌輸出的目錄

nohup

command

> out.log 2>

&1 &

# 使用 exit 命令 正常退出終端

exit

執行程式時Warning

執行程式時提出了這個乙個警告 activity not started,its current task has been brought to the front package ying.android import android.os.bundle import android.widget...

C 執行程式時間測試

程式中 include include using namespace std intmain 在命令列中 timer 檔名 檔案輸入輸出 e c vscode cpp acm timer.cpp include 該檔案定義了cin cout cerr 和 clog物件,分別對應於標準輸入流 標準輸...

linux 學習筆記 後台程序執行程式

if defined poe os family windows define pathseprator else define pathseprator endif inline string getprocessdir string strdir ifndef win32 可執行檔案所在目錄 i...