Почему ulimit возвращает разные результаты через java Runtime.exec () - PullRequest
0 голосов
/ 31 мая 2011

почему ulimit -a по-разному возвращается через Runtime.exec () от запуска прямо под bash, спасибо за любые указатели.

Java: открыть файлы (-n) 65536

bash-3.00 $ ulimit -a: открыть файлы (-n) 256

public class TestUlimit {
    public TestUlimit() throws IOException, InterruptedException {
            Runtime runTime = Runtime.getRuntime();
            Process p = runTime.exec(new String[] { "bash", "-c", "ulimit -a" });
            InputStream in = p.getInputStream();
            InputStreamReader isr = new InputStreamReader(in);
            BufferedReader br = new BufferedReader(isr);
            String line = null;
            System.out.println("Result of Process p = runTime.exec(new String[]     { \"bash\", \"-c\", \"ulimit -a\" });");
            while ((line = br.readLine()) != null) {
                    System.out.println(line);
            }
            p.waitFor();

            p = runTime.exec("ulimit -a");
            in = p.getInputStream();
            isr = new InputStreamReader(in);
            br = new BufferedReader(isr);
            System.out.println("Result of p = runTime.exec(\"ulimit -a\");");
            while ((line = br.readLine()) != null) {
                    System.out.println(line);
            }
            p.waitFor();
    }

Ответы [ 2 ]

0 голосов
/ 31 мая 2011

ulimit является встроенной оболочкой, и ее значения по умолчанию основаны на конфигурации оболочки. Возможно, что в Java используется оболочка по умолчанию, отличная от bash. Даже если это не так, возможно, у вас есть некоторые настройки, например, .profile, которые вызываются, когда у вас есть командная строка, но не при программном запуске оболочки.

0 голосов
/ 31 мая 2011

bash выполняет собственную команду ulimit? Проверьте .profile, .bashrc и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...