Как сделать хромовую поисковую систему независимой от моего местоположения GEO?

Просматривая список опций командной строки, принятых ps на странице руководства ps (доступный там и при запуске man ps), показывает, что у него нет возможности для входа в файл. Многие команды этого не делают.

Перенаправление с помощью > или >>, как объясняет John1024, отправляет стандартный вывод вашей программы в файл или устройство по имени справа от > / [F13]. Похоже, это то, что вы хотите.

Однако, если вы хотите записать вывод в файл, а также увидеть его непосредственно в терминале, то вы можете использовать в ps manual [] d1].

ps aux | tee file

Это использование (| tee file) похоже на > file, но оно также показывает вам выход. Если вы хотите увидеть вывод и также увидеть его непосредственно в файл (а не переписывать), используйте флаг -a:

ps aux | tee -a file

Это использование ([ f18]) соответствует >> file.

Как работает tee?

tee дублирует свой стандартный ввод, записывая его как в файл (или список файлов) заданный в качестве аргументов командной строки и стандартный вывод.

Обычно - то есть, когда программа или команда запускаются самым простым способом - его стандартный ввод принимается от пользователя. Это то, что пользователь вводит при запуске программы.

Но стандартный вход подключает стандартный вывод команды слева от него, к стандартным вводам команды в право на это. В приведенных выше примерах это приводит к тому, что ps aux отправляет свой вывод на вход tee вместо терминала (и tee, чтобы получить свой вход с выхода ps aux, а не от терминала).

tee затем записывает, что он получен как file, так и к терминалу.

Кстати, одно общее использование труб - это когда вы ожидаете вывод команды будет длинным, и вы хотите, чтобы иметь возможность перемещаться вверх и вниз в нем. Затем вы можете передать свой вывод на less. Например: dmesg | less.

Выход ошибки перенаправления / трубопровода.

Решения для перенаправления и трубопроводов, рассмотренные выше, и в ответе John1024, где стандартный выход идет, но они оставляют [d15 ] стандартный выпуск один. То есть большинство сообщений об ошибках (и некоторых других сообщений в зависимости от программы) не затронуты - даже в ps aux > file на экране появятся ошибки и file . [!d26 ]

Это обычно то, что вы хотите. И особенно в случае ps aux, маловероятно, что вы хотите получать сообщения об ошибках в своем выходном файле - ошибки являются неожиданными, и вы, вероятно, захотите их сразу увидеть. В любом случае ошибка приведет к тому, что файл, который вы пытаетесь сделать непригодным для своей задачи, в любом случае, если вы хотите создать таблицу запущенных процессов и их характеристики.

Однако, если вы хотите получить вывод ошибки чтобы быть обработанным точно так же, как и обычный выход, вы можете использовать & -сусовую версию операторов перенаправления и трубопроводов:

>& (или &>) вместо >: ps aux >& file или ps aux &> file &>> (не >>&) вместо >>: ps aux &>> file. |& (не &|) вместо |: ps aux |& tee file или ps aux |& tee -a file to append.

bash, интерактивная оболочка по умолчанию в Ubuntu, поддерживает операторы & ed. Это оболочка, которую вы используете, если вы не намеренно переключились на другую, поэтому для интерактивного использования (и для скриптов, где вы знаете, что они будут запущены с bash), вы определенно можете свободно их использовать. [ ! d42]

Вывод ошибки перенаправления / трубопровода на оболочках, которые не имеют операторов &.

Некоторые оболочки (например, dash, которые ответ John1024 ) не поддерживают их. В этом случае вместо > вы получите следующие ошибки:

>& (или &>): ps aux >& file или ps aux &> file dash: 1: Syntax error: "&" unexpected (при попытке использовать |&)

При работе в оболочке, где >&, >>& и |& не поддерживаются, вы можете отправить как стандартный вывод, так и стандартную ошибку через перенаправление или трубы традиционным способом, указав отдельно, что стандартная ошибка сначала перенаправляется на стандартный вывод.

Это достигается с помощью 2>&1. (1 является файловым дескриптором для стандартного вывода, а 2 является файловым дескриптором стандартной ошибки.)

Для do (т. е. когда вы хотите чтобы использовать >& или >>&), поставьте 2>&1 в самом конце:

ps aux > file 2>&1
ps aux >> file 2>&1

Для трубы (т. е. когда вы хотите быть в состоянии для использования |&), поставьте 2>&1 прямо перед трубой |:

ps aux 2>&1 | tee file
ps aux 2>&1 | tee -a file

1
задан 6 June 2018 в 01:36

0 ответов

Другие вопросы по тегам:

Похожие вопросы: