2011-09-06 17 views
1

我很跺腳。Java拒絕在低特權用戶的Linux下啓動(以root身份正常工作)

雖然如根:

[email protected] [~]# uname -a 
Linux web01 2.6.32-71.29.1.el6.x86_64 #1 SMP Mon Jun 27 19:49:27 BST 2011 x86_64 x86_64 x86_64 GNU/Linux` 

[email protected] [~]# java -version 
java version "1.6.0_27" 
Java(TM) SE Runtime Environment (build 1.6.0_27-b07) 
Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode) 

雖然作爲低特權用戶:

[email protected] [~]# java -Xmx32m -version 
Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 

更新:的的ulimit -a(

輸出時作爲低特權運行用戶):

core file size   (blocks, -c) 200000 
data seg size   (kbytes, -d) 200000 
scheduling priority    (-e) 0 
file size    (blocks, -f) unlimited 
pending signals     (-i) 7875 
max locked memory  (kbytes, -l) 64 
max memory size   (kbytes, -m) 200000 
open files      (-n) 100 
pipe size   (512 bytes, -p) 8 
POSIX message queues  (bytes, -q) 819200 
real-time priority    (-r) 0 
stack size    (kbytes, -s) 8192 
cpu time    (seconds, -t) unlimited 
max user processes    (-u) 35 
virtual memory   (kbytes, -v) 200000 
file locks      (-x) unlimited 
+7

「ulimit -a」的輸出是什麼? –

+2

您是否曾嘗試以root和非root身份運行_same_命令? – Mat

+0

@Paul新增了ulimit的輸出。 – Yon

回答

4
virtual memory   (kbytes, -v) 200000 

這是你的罪魁禍首。 Java虛擬機具有32M堆不適合成:

 
$ java -version 
java version "1.6.0_22" 
OpenJDK Runtime Environment (IcedTea6 1.10.3) (fedora-59.1.10.3.fc15-x86_64) 
OpenJDK 64-Bit Server VM (build 20.0-b11, mixed mode) 
$ ulimit -v 200000 
$ java -version 
Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 
+0

這是我們得到的root用戶: 虛擬內存(千字節,-v)無限制 爲什麼會有區別?在哪裏配置? – Yon

0

添加以下行/etc/security/limits.conf文件

<user> soft as unlimited 
<user> hard as unlimited 

你的Linux用戶更換<user>。 -as(地址空間)將用於修改虛擬/實際內存。

相關問題