Как найти tty, из которого выполняется конкретный cmd «scp»


11

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


Оригинал :

Как я могу узнать, какой конкретный cmd выполняется кем и узнать о моем терминале


1
Можете ли вы перефразировать этот вопрос, чтобы он был немного понятнее?

1
Вы имеете в виду, "какую команду ps я должен использовать, чтобы определить, кто использует scp?" Это было бы ps -ef | grep scp
Майкл Тодд

Ответы:


7

Чтобы увидеть, какие команды выполняются, вы используете "ps -ef". Это скажет вам, что все делают, хотя обычно это слишком много информации.

Чтобы сузить его, чтобы выяснить, кто запускает определенную команду, вы можете добавить фильтр "grep", например, так:

ps -ef | grep scp

Это вернет все команды scp, но может также вернуть команду grep, которая ищет scp и любые другие команды с вложенными в них буквами scp, поскольку grep просто соответствует строке. Таким образом, вам может понадобиться разобраться с выражением, данным для grep (часто вам просто нужно заключить его в кавычки и добавить пробел:

ps -ef | grep "scp "

или даже лучше использовать регулярные выражения и:

ps -ef | grep "[s]cp "

Если вы знаете пользователя и просто хотите знать, что он запускает, тогда "ps -fu" - ваш друг. Например

ps -fu tom

Который, конечно, может быть объединен с grep для получения процессов scp Тома:

ps -fu tom | grep "[s]cp "

Колонка 6 - это номер.


1
+1 за уловку «grep» [s] cp »- это то, что я использую в сценарии, который я называю« procname ».
Джонатан Леффлер

3

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

Для последней части вашего вопроса, sudoили suи тогда grep -c 'command' /home/username/.bash_history.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.