Примечание. Этот ответ является расширением ответа artistoex .
Эта команда должна отображать все запущенные в данный момент команды, выполненные текущим пользователем и запущенные в течение последних 60 секунд:
ps x --sort -start_time -U YOURUSERNAME -o start,command | \
awk '$1>=recently&&$1<=now' \
recently=$(date --date='60 seconds ago' +%T) now=$(date +%T) | sed 1,1d
Чтобы использовать эту команду, щелкните значок или пункт меню, чтобы выполнить команду, и пока только что запущенная программа все еще работает, выполните указанную выше команду. Не забудьте заменить YOURUSERNAME
именем вашего текущего пользователя.
Пояснение:
ps
отобразит запущенные в данный момент процессы. Объяснение аргументов ps
:
x
: включает в себя процессы, не выполняемые через терминал (фактически tty
). Добавление -t '?'
будет отображать только процессы, не связанные с терминалом.
--sort -start_time
: отсортировать вывод по времени, когда процесс начался (в порядке убывания)
-U YOURUSERNAME
: при замене YOURUSERNAME вашим именем пользователя будут отображаться только процессы, выполненные вашим пользователем. Это ограничение может быть снято при необходимости.
-o start,command
: показать два столбца в выходных данных: время начала процесса и команду, которая была выполнена
awk
используется здесь только для отображения процессов, выполненных в последнее время. Объяснение аргументов awk
:
$1>=recently&&$1<=now
: ограничить вывод процессами, которые выполнялись в течение последних 60 секунд. Чтобы изменить этот временной интервал, измените следующий аргумент (recently
назначенная переменная)
recently=$(date --date='60 seconds ago' +%T)
: установите переменную awk
recently
использованную в предыдущем аргументе, равной 60 секундам назад в формате HH:MM:SS
(формат времени ps
).
now=$(date +%T)
: установите переменную awk
now
на текущее время (это исключает процессы, выполненные менее 24 часов назад, которые выглядели бы так, как если бы они выполнялись в будущем)
Я добавил sed 1,1d
чтобы удалить первую строку вывода, потому что она покажет текущую выполняемую команду, которая не имеет смысла отображать.
Имейте в виду: использование ps
для определения того, какой процесс был выполнен, не будет работать должным образом для определенных программ. Например, если вы нажмете на ярлык Firefox, но Firefox уже запущен, новый процесс не будет создан, а время запуска старого процесса не изменится. Тем не менее, этот метод работает довольно хорошо для многих программ.