
오픈 소스 비영리 기관 'Open Source Initiative'의 로고. https://opensource.org/
본 글은 학교 '오픈소스 소프트웨어 입문' 과목을 수강하며 실습(또는 공부)한 내용을 정리한 글입니다.
개인 기록 용도로 작성한 글이라, 직접 이 글을 보고 실습을 따라하기엔 어려움이 많을 것으로 예상됩니다.
혹시 본 글을 보며 Linux를 공부하실 목적이라면, 일단 키워드 위주로 AI에게 물어봐가면서, 본인의 Linux 터미널에서 직접 타이핑해가며 공부하시기를 추천드립니다.
질문이나 의견이 있다면 자유롭게 댓글 달아주세요!
터미널 실습
터미널을 키면, 그 터미널이 쉘을 실행시켰다는 뜻으로 커서가 깜빡거림.
커널은 3개의 서브시스템으로 나뉘어있다고 했음.
그 중에, 프로세스를 관리하는(컨트롤하는) 명령어(유틸리티)중에,
내가 지금 이 민쥐에서 실행 중인 프로세스의 상세 목록을 보고 싶어요 → ps
$ ps
PID PPID PGID WINPID TTY UID STIME COMMAND
893 1 893 22864 ? 197609 21:53:13 /usr/bin/mintty
997 894 997 15180 pty0 197609 01:35:26 /usr/bin/ps
894 893 894 30728 pty0 197609 21:53:14 /usr/bin/bash
내가 지금 무슨 터미널을 쓰고 있나요? → tty
명령어 치면 됨.
$ tty
/dev/pty0
저 TTY는 teletype의 약어인데, 옛날에 뭐 전보 보내면 반대편에서 프린트해주는 그런 걸 말하는건데(전산타자기), 이게 터미널이랑 비슷해서, 리눅스에서 tty는 컴퓨터와 연결된 가상의 터미널을 말한다고 봐도 됨.
여기선 터미널을 pty0라는 얘가 쓰고있다는 거임.
pty0은 스도 터미널임. 가상의 터미널.
진짜 물리적으로 붙은 시리얼 포트에다 꽂은 터미널은 tty0, USB를 꽂았으면 ttyUSB0같은 터미널이 실행됨.
여기까진 아직 내 컴퓨터에서 터미널을 확인한 것.
이제 (검열)
접속하자.
참고로 (검열)로 해도 됨. 같은 기계임.
who
: 현재 서버에 로그인해 있는 사람들이 쫙 보여짐.
date
: 현재 날짜와 시간을 보여준다고 하면 10점 만점에 3점임. 현재 컴퓨터에 설정되어 있는 날짜와 시간을 보여준다고 해야함.
man date
: date 명령어에 대한 메뉴얼을 보여줌.
여기서, 리눅스 시스템은 사용자를 시스템 슈퍼 유저(교수님)과, 일반 유저 두 개로 사용자를 나누는데, 날짜 시간 바꾸는 건 sudo 명령어를 써야 함. 근데 우리는 못 씀. 그래서 우리는 시스템의 (날짜와) 시간을 바꿀 수 없음.
우리가 여기서 sudo 쓰는 순간, 누가 sudo를 try했는지 보안상 위험하다고 교수한테 메일이 감.
우리가 서버에 ssh로 접속(로그인)을 하면, 서버는 자동으로 로그인한 사용자를 위한 터미널을 하나 만들어 줌. 얘도 당연히 하드웨어가 아닌 소프트웨어 터미널이니까, 스도 터미널(가상 터미널)임.
$ tty
/dev/pts/51
이렇게 학교 서버에 연결된 상태로 여기서 내 터미널을 확인해보면, /dev/pts/51이라는 터미널이 나를 위해 만들어짐.
참고) vscode에 ssh 접속으로 이 서버에 접속하지 마라. 10명만 연결해도 서버 터짐.
echo 123 하면, 123을 stdout에다가 출력해줌.
chmod 777 ‘tty’
를 교수자가 하고,
우리가 echo 123123123123 > /dev/pts/47 하면, 저기로 출력됨. redirection.
/dev/ptyX vs /dev/pts/X 차이??
https://linux.die.net/man/7/pty
Files
/dev/ptmx (UNIX 98 master clone device)
/dev/pts/* (UNIX 98 slave devices)
/dev/pty[p-za-e][0-9a-f] (BSD master devices)
/dev/tty[p-za-e][0-9a-f] (BSD slave devices)
이걸 명확히 설명해주는 글이 없어서 직접 공식문서 찾아봤는데,
결론은 BSD 기반의 old한 장치들은 ptyX 명명법을,
unix 98 기반의 최신 장치들은 ptx/X 명명법을 쓴다고 함.
아마 Git bash는 BSD 기반에서 내려온 버전의 민쥐를 쓰거나 해서 ptyX 명명법을 쓰는듯?
Ref. 및 읽어 봄직한 글들
https://velog.io/@preeded/TTY에-대하여-그리고-ptsdevpts(강추!! 꼭 읽어보기 → 여기 글에 달린 레퍼런스들도)
https://kimdy.tistory.com/37(TTY는 디바이스 드라이버라는 관점을 제시)
touch는 원랜 어떤 파일의 timestamp를 변경하는 commands임. 근데, touch한 다음에 filename을 썼는데 그 파일이 존재하지 않으면, 그 파일을 생성함.
ls -la
: long all option: 모든 파일을 자세히 보여주세요.
$ ls -la
drwxr-xr-x 6 foss110 foss 4096 Mar 11 10:39 .
drwxr-xr-x 153 root foss 4096 Feb 25 19:05 ..
-rw-r--r-- 1 foss110 foss 0 Mar 11 10:39 (검열)
-rw------- 1 foss110 foss 14 Mar 6 10:32 .bash_history
-rw-r--r-- 1 foss110 foss 232 Jul 22 2024 .bash_logout
-rw-r--r-- 1 foss110 foss 3788 Jul 22 2024 .bashrc
drwx------ 2 foss110 foss 4096 Mar 6 10:32 .cache
drwx------ 3 foss110 foss 4096 Mar 6 10:32 .config
drwx------ 3 foss110 foss 4096 Mar 6 10:32 .local
drwx------ 9 foss110 foss 4096 Jul 24 2024 Maildir
-rw-r--r-- 1 foss110 foss 657 Jul 22 2024 .profile
Command Design 및 실습
command는 아래와 같은 형식들을 가짐.
Command [Option]… [Files]…
저렇게 bracket으로 된 건 ‘생략가능’임.
bracket이 없는 그냥 글자는 ‘생략불가’임.
…은 인자가 여러 개 붙을 수 있다는 거임.
-rw-r--r-- 1 foss110 foss 0 Mar 11 10:39 (검열)
리눅스에서 ‘아카이브 파일’이라 하면, 무언갈 저장한 그냥 일반 파일이란 뜻임.
ls -l했을 때, 첫 번째로 보이는 글자는 파일 타입임. -가 되어 있는 건 일반 파일(아카이브 파일)이란 뜻, d면 디렉토리라는 뜻.
그리고 그 뒤에 3*3 총 9글자는 permission(권한) 정보임.
permission 다음에는 하드 링크 수, file owner(파일 소유자) foss110
, file group(파일 그룹) foss
, file size(파일 크기) 0
가 나옴.
여기서 하드 링크 수는 해당 파일을 참조하는 경로의 수임. 기본적으로 폴더의 경우 ., ..를 포함해 딸린 파일들의 개수만큼이 기본적으로 나옴.
그리고 타임스탬프가 나오는데, 생성된 시간(Created time), 가장 최근에 읽은 시간(last access time), 가장 최근에 고친 시간(last modification time) 이 3개의 타임스태프가 모든 파일에 다 있음. 근데, 그냥 ls -l하면 last modification time Mar 11 10:39
이 나옴.
그리고 마지막으로 파일명 (검열)
이 나옴.
ls -l [filename]
하면, 그 뫄뫄뫄 파일에 대한 정보만 나옴.
-rw-r--r-- 1 foss110 foss 0 Mar 11 10:39 (검열)
-> 이 파일은 아카이브 파일이고, 권한은 파일 소유자에게 읽기와 쓰기,
그리고 파일 그룹과 others에게 읽기 권한이 부여되어 있다. 하드 링크 수는 1개이며,
해당 파일의 소유자는 foss110이며,
해당 파일은 foss 그룹에 속해 있고, last modification time은 3월 11일 10:39이며,
해당 파일명은 (검열) 이다.
'Developments > Linux' 카테고리의 다른 글
[Linux 실습] Ch4. Linux의 디렉토리(Linux Directory) (0) | 2025.03.27 |
---|---|
[Linux 실습] Ch3. 완전 기본적인 명령어들(Very basic commands) (0) | 2025.03.27 |
[Linux 실습] Ch1. Linux 시스템 기본 개념 (0) | 2025.03.27 |
[Linux] 쉘, 터미널, bash, git bash, mingw-w64 등 완벽 개념정리!!! (0) | 2025.03.05 |
[Linux] 리눅스 기본 명령어들(commands) 간단 정리!! (0) | 2024.09.12 |