Ubuntu 12.04 LTS использует bash.

Я попытался запустить команду ps из Java-программы, используя Runtime, и получил неожиданный вывод.

При ближайшем рассмотрении я понял, что это был результат:

ps --deselect

Что наводит меня на мысль, что ps выполняется с включенными флагами по умолчанию

Когда я просто набираю

ps

в командной строке.

Что это за флаги? Или я ошибаюсь?

1 ответ1

1

ps учитывает переменную окружения PS_PERSONALITY при выборе способа отображения результатов (задокументировано на странице руководства). Значения, которые у меня есть на моей странице руководства:

PERSONALITY
   390        like the OS/390 OpenEdition ps
   aix        like AIX ps
   bsd        like FreeBSD ps (totally non-standard)
   compaq     like Digital Unix ps
   debian     like the old Debian ps
   digital    like Tru64 (was Digital Unix, was OSF/1) ps
   gnu        like the old Debian ps
   hp         like HP-UX ps
   hpux       like HP-UX ps
   irix       like Irix ps
   linux      ***** recommended *****
   old        like the original Linux ps (totally non-standard)
   os390      like OS/390 Open Edition ps
   posix      standard
   s390       like OS/390 Open Edition ps
   sco        like SCO ps
   sgi        like Irix ps
   solaris2   like Solaris 2+ (SunOS 5) ps
   sunos4     like SunOS 4 (Solaris 1) ps (totally non-standard)
   svr4       standard
   sysv       standard
   tru64      like Tru64 (was Digital Unix, was OSF/1) ps
   unix       standard
   unix95     standard
   unix98     standard

Вы можете попробовать их все :-), используя

PS_PERSONALITY=digital ps

Скорее всего, значение переменной среды PS_PERSONALITY отличается (или может отсутствовать), когда вы запускаете ps из программы, по сравнению с тем, когда вы запускаете его в интерактивной оболочке (вероятно, с пользовательской настройкой в .bashrc и т. П.) ,

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .