Назад | Перейти на главную страницу

Какой вариант для ps предпочтительнее?

GNU ps поддерживает параметры в стиле BSD, параметры в стиле UNIX и длинные параметры GNU. Является ли использование одного из этих типов (в сценариях и в командной строке) предпочтительным перед другими?

Из справочной страницы у меня сложилось впечатление, что функциональность стилей опций частично не перекрывается.

Вообще говоря, просто используйте набор параметров, который дает вам желаемый результат.

Ради здравомыслия и переносимости (других людей) я предлагаю придерживаться аргументов в стиле BSD или SysV - по большей части современные системы принимают оба этих набора аргументов, и таким образом, когда сценарий, который вы написали для решения проблемы в Linux попадает в систему, которая не понимает длинных опций в стиле GNU, и она все еще работает (весь мир не машина Linux).

Без разницы POSIX говорит. Я не собираюсь вдаваться в подробности, но я полагаю, что скрипты, использующие ps, в любом случае будут не очень переносимы.

Является ли использование одного из этих типов (в сценариях и в командной строке) предпочтительным по сравнению с другими?

Это во многом зависит от целевых платформ, на которых должны запускаться ваши скрипты. Если ваши сценарии должны запускаться только в Linux, используйте параметры в стиле GNU, если они также должны быть использованы в * BSD, используйте параметры в стиле BSD и, наконец, что не менее важно, если они должны работать в широком диапазоне unixoid-систем (например, Solaris) идут с опциями в стиле UNIX.

Я думаю, вы обнаружите, что варианты POSIX или SVR4 гораздо более распространены.

Обычно я анализирую вывод uname и выбираю правильные / bin / ps, / usr / bin / ps и аргументы на основе этого значения. На неподдерживаемых платформах я просто выхожу, не думаю. В Linux я установил для $ PS_PERSONALITY значение "posix" и отключил $ I_WANT_A_BROKEN_PS на случай, если пользователь по какой-то причине установил этот параметр. Это всего лишь защитная мера.

Стиль GNU getopt_long () полезен только в Linux, и даже если это то, к чему вы стремитесь, люди гораздо лучше знакомы с короткими параметрами.