В настоящее время я изучаю некоторые команды UNIX и столкнулся с несколькими необъяснимыми вопросами. Спасибо за ваш ответ.
Когда я запустил команду
w
из терминала, я получил несколько сообщений, показанных на рисунке ниже. Я знаю, чтоs000
означает терминал, в котором я набрал командуw
. Но я не понимаю, как называется ttyconsole
и с помощью которого, как он сказал, я вошел в систему. И он сказал, чтоconsole
некоторое время был в режиме ожидания. Могу ли я переключиться на ,console
чтобы активировать этот tty, чтобы он больше не был в режиме ожидания?Я также провел еще один эксперимент, пытаясь выгнать гостя, который входил в систему. Я знал, что могу убить процесс bash, который был запущен гостем, но почему-то у меня возникла проблема с убийством
console
запущенного гостя. Как мне полностью выгнать гостя, не перезагружая компьютер? Я не могу убитьconsole
. Корень этой проблемы во многом тот же, что и первой: что означает «console»? Это определенно не означает терминал, в котором я ввел командуw
.Эту проблему можно также найти в системе Linux, например Ubuntu 14.04, где последняя называет
console
с номером, например0
или1
. Интересно, что означают 0 или 1 в столбце tty. Но я могу быть уверен, что они имеют похожее значение сconsole
.
решение1
Я не знаком с macOS, но я ожидаю, что концепции довольно похожи на те, что есть в Linux. Это несколько упрощенно, но в целом в этом контексте «консоль» относится ко всему компьютеру. Или, если быть более конкретным, к дисплею и устройствам ввода для человека (клавиатура, указывающее устройство(а) и т. д.) (Сетевые входы в систему исключены из «консоли».)
Когда вы входите в систему своего компьютера (локально, а не через сеть), вы входите в консоль.
Теперь вы, очевидно, знакомы с терминалами — окнами, в которых можно запускать команды, например ls
и w
. Когда вы входите в консоль, она автоматически запускает команду (или группу команд), которая дает вам привычный оконный интерфейс. Некоторые операционные системы делают механизм, с помощью которого это происходит, видимым, а иногда даже регулируемым; другие делают это полностью «под капотом».
Поскольку консоль не запускает никаких команд, кроме самой оконной системы, она, похоже, простаивает. В большинстве операционных систем (и я ожидаю, что macOS — одна из них), единственным способом переключиться на консоль было выйти из оконной системы — но это вернет вас в консоль, которая затем автоматически выведет вас из системы.
Есть еще одна загвоздка:
- Команда
w
считывает системный файл, форматирует данные так, чтобы их было удобно просматривать, и записывает их в стандартный вывод. - Запись записывается в файл всякий раз, когда кто-либо входит в систему с консоли или по сети. Некоторые (большинство? все?) системы также записывают запись, когда пользователь с консоли запускает новое окно терминала.
- Записи обычно стираются, когда пользователь выходит из системы или закрывает окно терминала.
- Ключевое слово в приведенном выше пункте — «обычно». В некоторых случаях, если вы убиваете процесс (особенно если вы делаете это как суперпользователь), вы можете помешать механизму, который стирает старые данные. Таким образом,
w
может быть сообщена информация, которая больше не является действительной.
Если вы не знаете, как использовать ps
, вам следует научиться. Вы можете использовать этовместоиз w
, но, вероятно, лучше использовать их вместе. Используйте w
для получения дорожной карты того, что искать в ps
выходных данных. Не верьте слепо всему, w
что вам говорят; верьте только той информации, которую вы можете проверить с помощью ps
. Например, если вы убили все процессы «гостя», а w
все еще говорите, что «гость» вошел в систему, он, вероятно, дает вам устаревшую, недействительную информацию.
Вы можете найтиВ чем разница между оболочкой, консолью и терминалом? и В чем именно разница между «терминалом», «оболочкой», «tty» и «консолью»? стоит того, чтобы ее прочитать.