Gnu-Screen

ulimit 權限是直接從螢幕實例硬設置的。如何解決這個問題?

  • September 6, 2011

充其量我可以用 shell 會話來描述這個問題:

這表明 ulimit 工作正常。這是正常 ssh 會話的開始:

$>ulimit -c
0
(ushanka:973:0) ~
$>ulimit -c unlimited
(ushanka:974:0) ~
$>screen -t question 
<-- see next preformated section for screen session -->
[screen is terminating]
(ushanka:976:0) ~
$>ls -alh /usr/bin/screen
-rwxr-sr-x 1 root screen 353K Dec  4  2006 /usr/bin/screen
(ushanka:977:0) ~
$>ulimit -c
unlimited

這是螢幕實例,ulimit 突然像為核心設置了硬限制 0 一樣。

$>ulimit -c
0
(ushanka:973:0) ~
$>ulimit -c unlimited
bash: ulimit: core file size: cannot modify limit: Operation not permitted
(ushanka:974:0) ~
$>cat ~/.bashrc
. $HOME/lbin/setenv
(ushanka:975:0) ~
$>cat ~/lbin/setenv
MACH=`uname -m`
settve() { eval `/home/tv/tools/common/bin/settve $0 $@`; }
export LD_LIBRARY_PATH=${HOME}/local/${MACH}/lib:$LD_LIBRARY_PATH
export PATH=${HOME}/local/${MACH}/bin:$PATH

(ushanka:976:0) ~
$>

所以在螢幕會話 ulimit 內部似乎設置了 0 的硬限制,我不知道為什麼。一種解決方法是使用 su - 作為啟動螢幕的命令,但這並不實用。我已經看到了許多在螢幕內使用 ulimit 而沒有發生此問題的範例。重要的一件事可能是將螢幕的組會話 ID 設置為螢幕組。但是,/etc/security/limits.conf 文件中沒有任何限制。

有誰知道發生了什麼以及我該如何解決這個問題?

ulimit -c 0我在沒有 -S的系統範圍內的互動式非登錄 shell 設置中找到了一個腳本。這就是導致問題的原因,因為執行螢幕會導致這些腳本對普通使用者透明執行。這是腳本中的一個錯誤,系統管理員已修復它。

引用自:https://serverfault.com/questions/307013