터미널을 열고 w
명령을 실행하면 다음과 같이 표시됩니다.
user tty7 :0 12:04 39:56 36.87s 0.06s /sbin/upstart -
이제 명령을 열거 terminator
나 실행하면 명령 출력에 해당 항목이 표시됩니다.xterm
w
w
user tty7 :0 12:04 39:56 36.87s 0.06s
/sbin/upstart -
user pts/2 :0.0 12:50 1.00s 0.02s 0.00s w
gnome-terminal
하지만 열거나 새 항목이 표시되지 않습니다 xfce4-terminal
. xfce4-terminal에 대한 새 세션 대신 터미네이터에 대한 새 세션이 표시되는 이유는 무엇입니까?
답변1
w
utmp
/var/run/utmp
(일반적으로 Linux 시스템)에 저장된 정보를 표시합니다 . 이는 일반적으로 "로그인" 세션에 의해서만 업데이트됩니다.즉 login
(가상 콘솔 로그인 또는 직렬 연결용), 디스플레이 관리자(그래픽 세션용), SSH 서버(SSH 연결용) 및 일부(대부분?) 터미널 에뮬레이터. 후자의 경우 업데이트 여부는 utmp
내장된 지원 및 구성에 따라 다릅니다. 예를 들어 이 플래그( 업데이트 비활성화 , 업데이트 활성화) 및 GNOME 터미널이 xterm
있습니다 .ut
-ut
utmp
+ut
utmp
더 이상 직접 업데이트 되지 않음.
utmp
따라서 귀하의 경우에 추가된 항목을 볼 수 있습니다. 하나는 디스플레이 관리자(in tty7
)에 의해 추가되고 다른 하나는 사용 중인 일부 터미널 에뮬레이터에 의해 추가됩니다.
utmp
예를 들어 래퍼 명령을 사용하여 원하는 항목에 로깅을 추가하는 것이 가능해야 libutempter
하지만 이는 분명히 그렇습니다.바라는 것만큼 간단하지는 않다.
답변2
w
터미널 세션은 표시되지 않습니다. 이것로그인이 프로그램에서 보고한 데이터베이스 w
는단말기데이터 베이스. (공식적으로는사용자 청구데이터베이스이지만단일 유닉스 사양현재로서는 불완전합니다. )
터미널 데이터베이스라면 모든 내용을 기록할 것입니다.가짜tmux
NeoVIM, emacs, , screen
, ptybandage
, ptyrun
, 심지어 와 같은 프로그램에서 사용하는 터미널입니다 script
.
("호출" 터미널 사용 및 BBS, FidoNet 및 UUCP 터미널 세션과 같은 항목을 기록하지 않는다는 점에 대해 좀 더 많은 기록이 필요한 비슷한 주장을 할 수 있습니다.)
로서로그인기록하는 데이터베이스로그인 세션, 텍스트 및 그래픽. libvte 사람들은 이 데이터베이스에 쓰는 것이 권한 범위 내에 있다고 생각합니다.로그인하위 시스템, 그래픽 및 텍스트는 터미널 범위에 포함되지 않습니다.에뮬레이터진행중이내에로그인 세션. 이는 Trusted Computing Foundation 외부의 프로그램이 로그인 데이터베이스를 작성/업데이트할 수 있도록 허용하므로 로그인 계정 보안에 있어 말도 안되는 일입니다.
따라서 모든 터미널 에뮬레이터 세션이 로그인 데이터베이스에 로그인 세션으로 표시될 것이라고 기대해서는 안 됩니다. 또는 실제로는어느터미널 에뮬레이터 세션. 로그인 셸을 호출하는 터미널 에뮬레이터도 마찬가지입니다.시스템에 실제 로그인이 없습니다., 로그인된 세션 내에서 전적으로 작동합니다. 터미널 에뮬레이터 작성자는 로그인 데이터베이스에 터미널 에뮬레이터 세션을 기록하려고 시도했지만 이러한 노력으로 인해 오랫동안 인식된 여러 가지 문제가 발생했습니다.
반대로 당신은~해야 한다당신의 싱글 기록을 볼 것으로 예상됩니다GUI로그인 세션. (물론, Furious Reading의 기사에 따르면 이는 실제로 매우 혼란스럽습니다.)
추가 읽기
- 조나단 데보인 폴라드(2018).유닉스 로그인 데이터베이스. 자주 주어지는 답변입니다.
- https://unix.stackexchange.com/a/437762/5132
pututxline
. 기본사양. IEEE 1003.1:2017. 그룹을 엽니다.