Есть ли способ посмотреть, какие команды выполняются в другой оболочке, как они выполняются? Обе оболочки - bash, и у меня есть root-доступ, если это имеет значение. Я не могу установить дополнительное программное обеспечение, и я не хочу, чтобы другая оболочка выполняла какие-то особенные действия, такие как экран запуска.
Ситуация: я удаленно вошел в Linux-машину, как и мой коллега. Я хотел бы видеть команды, которые она выполняет в своей оболочке. Я знаю, что мог бы использовать некоторую комбинацию watch
и, ps
чтобы увидеть любые команды, выполнение которых занимает больше секунды, но я не верю, что это помогло бы с очень короткими командами.
shell
monitoring
Том Паннинг
источник
источник
kill
, иcd
не порождают подпроцессы и никогда не появятся в выводе ps.Ответы:
Так как ты root, ты всегда мог
strace -f -e execve -p her_bash_pid
. Это-f
необходимо, потому что ее оболочка будет форкировать новый процесс передexec
, но это также означает, что вы увидите все, что выполняются дочерние процессы.источник
exec
.Если ваш коллега может изменить некоторые настройки истории для своей оболочки bash, вы можете получить эту информацию из tail -f /home/user/.bash_history. Вот настройки, которые вам понадобятся для записи .bash_history после каждой команды, а не при выходе из оболочки:
Я бы посчитал сеанс экрана идеальным решением.
источник
После быстрого исследования (и некоторого размышления) я могу дать вам следующий список возможных вариантов:
conspy
.screen
. Если вы просто хотите помочь, а не шпионить за ней, она, возможно, захочет запустить ее сеанс внутри экрана. Затем вы можете просто прикрепить к ее сессииsudo -u herUsername screen -x
cat /dev/pts/X | tee /dev/pts/X
было первым, что пришло мне в голову. Но после попытки действительно не работает и это очень грязное решение. Каждый символ печатается только на одном из подключенных терминалов (что также является причиной вызоваtee
). Испытывая это, я мог следить за каждым вторым персонажем. С небольшим воображением вы можете догадаться, что она замышляет ...источник
Экран GNU - лучшая награда IMO на данный момент. Если экран GNU (или tmux) недоступен, запустите ваш коллегу
script -f
.И тогда вы можете посмотреть, что она делает, делая
tail -fn +0 /path/to/typescript
.источник
Чтобы использовать экранный терминал Unix, чтобы вы могли видеть входы и выходы своего коллеги в режиме реального времени, используйте команду Unix
screen
.Вы вводите команду
screen -d -m -S myscreenname
screen -x myscreenname
(Конечно, замените myscreenname на то, что вы хотите, чтобы отображаемое имя было).
Сотрудник набирает команду
screen -x myscreenname
Чтобы закончить с совместным использованием ваших терминалов Unix, любой человек может ввести команду
exit
Отличной особенностью экрана является то, что вы можете вводить команды с терминала Unix, и коллега может видеть результат на ее экране. Это отличный способ сделать парное администрирование и наставник юных администраторов Unix.
источник
Чтобы завершить ответ @ jordanm ... если вы оба используете одну и ту же учетную запись пользователя, т.е. вывод из
то же самое для вас и вашего коллеги, тогда мы можем повеселиться.
Мы можем включить просмотр вызванных команд в одном терминале, чтобы они были мгновенно доступны в другом.
Если вы вызываете
history
в своем терминале, вы видите ваши предыдущие команды. По умолчанию bash записывает свою историю в конце каждого сеанса в a~/.bash_history file
, перезаписывая существующий файл обновленной версией. Это означает, что если вы вошли в систему с несколькими сеансами bash, только последний из них завершит свою историю.-------------------------------------------------- -----
Отредактируйте свой
~/.bashrc
и добавьте к немугде
history -a
добавляет в~/.bash_history
файл сразу, а не в конце сеансаhistory -c
очищает текущую историю сеансаhistory -r
читает~/.bash_history
файл, к которому мы добавили, обратно в историю наших сессийПримечание: параметр содержит команды, которые выполняются перед тем каждого нового командной строки. так command1 будут сохранены только в истории , когда command2 выполняется
PROMPT_COMMAND
Вы также можете добавить временную метку рядом с каждой командой для удобства просмотра истории. Снова отредактируйте
~/.bashrc
и добавьтеТакже хороший хак, если вы хотите использовать несколько терминалов и хотите, чтобы ваша история команд была доступна :)
Больше информации
источник