Last 및 grep을 사용하여 월요일에 로그인한 모든 사용자를 나열하는 명령 또는 명령 시퀀스를 작성해야 합니다. 나는 이것을 생각해 냈지만 성공하지 못했습니다.
grep -i /var/log/wtmp | grep -i /var/log/wtmp | 최종 -t 20150731
답변1
last | grep -i Mon
( -i
나처럼 "Mon"을 대문자로 쓰는 경우에는 해당 옵션이 필요하지 않습니다)
제안된 솔루션에는 몇 가지 문제가 있습니다.
파이프
|
표기법은 (파이프를 통해) 첫 번째 프로그램(왼쪽)의 표준 출력을 두 번째 프로그램(표준 입력)으로 보냅니다. 그래서 당신이 하는 일은grep -i /var/log/wtmp
의 출력을last -t 20150731
. 로그인 정보가 출력되기 때문에last
먼저 와야 합니다.grep -i /var/log/wtmp
표준 입력에서 "/var/log/wtmp"를 찾아보세요(대소문자 구분 안 함). 파일을 검색 할 수 있지만grep
파일은 검색하려는 항목 뒤에 옵니다(예:grep find_me in_this_file
파일in_this_file
에서 "find_me" 문자열 검색). 파일이 지정되지 않았으므로 표준 입력을 찾습니다. 첫 번째(파이프 전)의 경우 이는last
;last
하지만grep
첫 번째 항목의 경우 Enter 키를 눌러 명령을 실행한 후 입력하는 내용입니다.grep
이 경우 실제로 "/var/log/wtmp"가 아닌 "Mon" 검색을 사용해야 합니다 .last
"/var/log/wtmp"를 사용하세요. 하지만 관심 있는 것은 데이터를 얻을 위치 가 아니라grep
출력뿐입니다 .last
last
last -t 20150731
2015년 7월 31일까지의 모든 로그인 정보가 출력됩니다. (7월 31일을 포함하려면 8월 1일을 날짜로 지정해야 합니다.) 유일한 문제는last
날짜에 하이픈이 필요하다는 것입니다.~하지 않는 한전체 시간(초 포함)을 지정합니다. 따라서 하이픈은 필요last -t 2015-07-31
하지만 하이픈은 필요하지 않습니다last -t 20150731000000
(둘 다 같은 시간, 자정을 지정함).시작2015년 7월 31일). 원래 질문에는 날짜별로 목록을 제한해야 한다고 명시되어 있지 않으므로 위 답변에서 제외하겠습니다. 날짜별로 제한해야 하는 경우last -t 2015-07-31
7월 30일(7월 31일 제외)까지의 목록을 사용하세요. 또는last -t 2015-08-01
7월 31일 현재 목록.
grep
자세한 내용(정규 표현식 및 을 사용하여 다양한 시간 형식으로 수행할 수 있는 모든 재미있는 작업 포함)을 보려면 및 last
매뉴얼 페이지를 확인하세요.man grep
man last
위는 로그인을 역시간순(가장 최근 순)으로 표시합니다. 다른 명령을 추가하여 원래 질문의 제한을 초과했지만 결과를 명령 grep
에 파이프 tac
하여 결과를 시간순(가장 최근 마지막)으로 표시 할 수도 있습니다 last | grep -i Mon | tac
.
답변2
last | grep Mon | awk '{print $1}' | sort -u