Кто-то в списке рассылки моей местной группы пользователей Linux спросил, есть ли способ узнать последнюю команду, выполненную в системе GNU/Linux.
Я полагаю, мы говорим о последней команде в системном масштабе. После некоторых размышлений, если ограничить набор команд теми, которые были введены реальными пользователями с помощью интерактивной консоли, то последняя должна была быть зарегистрирована в истории команд.
Другой способ рассмотрения этого вопроса — спросить, как определить, какой процесс был последним, созданным на компьютере GNU/Linux, относительно того, выполняется ли он еще или уже завершил выполнение, какие процессы были родительскими и другую соответствующую информацию.
решение1
Я нашел пакет для Linux, который помогает вести учет процессов.
На моей системе Ubuntu 9.10 я сделал следующее, чтобы установить программу «acct»:
sudo apt-get install acct
Затем необходимо создать пустой файл журнала, что можно сделать следующим образом:
sudo touch /var/log/pacct
После этого необходимо активировать учет процессов:
sudo /usr/sbin/accton /var/log/pacct
С этого момента процессы регистрируются вместе с пользователем, который их запустил, и соответствующим терминалом.
Файл журнала можно просмотреть с помощью этой команды:
lastcomm -f /var/log/pacct
Я все еще изучаю эту программу... но, похоже, она мне помогает.
решение2
Для конкретного пользователя (и оболочки): история
Для текущего процесса: ps
решение3
Ну, системная версия выглядит довольно сложной. Такая система подразумевает, что должен быть некий процесс, который отслеживает каждого пользователя .bash_history. Затем, когда он обновляется, обновляется центральная база данных. Как только это будет сделано, мы можем быть правы в расширении команды "history", которая выбирает из центральной базы данных. Неплохая идея, хотя.
решение4
Вы можете использоватьСнупидля мониторинга всех выполняемых команд.