Linux 101
1. 로그인&아웃
(1) 개인컴퓨터가 리눅스 machine인 경우(local Linux machine을 사용하는 경우)
개인컴퓨터에 리눅스OS를 설치하여 사용한다면 대개 사용자 자신이 root user (관리자 administrator 또는 super user)인 경우에 해당한다. 이 경우 관리자 권한으로 일반 계정을 생성한 뒤, 보안상의 이유로 가급적 일반 사용자 계정으로 로그인하는 습관을 들인다. 일반 사용자로 로그인 후, 필요하다면 su (switch user)명령어를 사용하여 언제든지 일반 사용자에서 관리자로 계정 전환이 가능하다. 계정전환없이 특정 명령어만 관리자 권한으로 실행하려면 sudo + (실행하고자 하는 명령어)를 사용하여도 된다.
(2) Linux 클러스터에 원격 접속(remote connection)하는 경우
원격으로 떨어져 있는 Linux 클러스터에 접속하려면 먼저 본인의 컴퓨터(local computer)에서 터미널(terminal)을 실행한다. 본인의 컴퓨터 OS가 리눅스 OS이거나 MacOS라면 터미널이 기본으로 설치되어 있으나, Windows인 경우는 부가적인 프로그램(putty나 MobaXterm)을 설치해야 한다. putty 터미널을 사용하는 경우 기본적으로 텍스트 기반 통신만 가능하므로, gui (graphic user interface) 기반 프로그램을 원격 실행하려면 x11 기능을 활성화 해야 한다. 이를 위해서 xming을 추가적으로 설치해준다. xming이 설치되었으면 putty configuration -> connection -> SSH -> X11에서 Enable X11 forwarding을 체크하여 ssh 접속시 X11 기능을 활성화한다.
putty나 MobaXterm외에도 cygwin 또는 Windows Subsystem Linux (WSL) 등을 설치하여도 terminal을 실행할 수 있다.
교내/외 local 컴퓨터에서 클러스터의 IP 주소를 활용하여 클러스터로 접속할 때 다음의 명령어를 터미널에 입력한다. 옵션 -X는 X11 forwarding을 하는 경우 붙인다. 현재는 보안 상의 이유로 교외 컴퓨터에서 바로 클러스터 접속을 허용하지 않는다. 교내 컴퓨터를 한 번 거쳐서 접속을 하던지 아니면 VPN 서비스(Virtual Private Network, e.g. ysvpn)를 통하여 접속을 한다.
$ ssh -X 사용자ID@IP주소
클러스터의 IP 주소 대신 DNS (domain name system) service에 따라 클러스터에 할당된 이름을 사용하여 접속할 경우는 다음의 명령어를 이용하다.
$ ssh -X 사용자ID@클러스터이름
(3) log out
exit 명령어를 사용하여 log out 한다.
2. 디렉토리 구조 (directory structure)
일반 사용자로 리눅스 시스템에 로그인하면 home directory (/home/사용자ID)에서 시작하게 된다. 일반적인 리눅스 시스템의 디렉토리(Windows에서 폴더에 해당함) 구조를 보면 최상위를 root 디렉토리라고 하며 / 로 표시된다. 그 아래에 /bin, /boot, /dev, /etc, /home, /lib, /media, /mnt, /opt, /root, /sbin, /tmp, /usr, /var 등의 디렉토리가 있다.
/bin: 기본적인 실행 명령 파일 보관 디렉토리
/dev: 시스템 장치(하드디스크나 CD-ROM등의 장치)파일 보관 디렉토리
/etc: 시스템에서 사용하는 설정 파일 보관 디렉토리
/home: 일반 사용자들 홈 디렉토리가 위치함
/lib: 각종 라이브러리 파일 보관 디렉토리
/media: 제거가능한 장치파일 연결되는 디렉토리
/mnt: mount 디렉토리
/opt: 추가응용프로그램 설치 디렉토리. 패키지 관리자를 사용하여 설치되는 파일은 본 디렉토리의 하부에 설치된다.
/root: 관리자 계정 홈 디렉토리
/sbin: 시스템 명령 파일 보관 디렉토리
/tmp: 임시 파일 저장 디렉토리
/usr : 일반사용자들이 함께 사용할 대부분의 파일 보관
3. 기본 명령어
pwd 현재 디렉토리 위치를 보여주는 명령어
로그인하자마자 pwd를 입력하면 home directory를 보여준다.
$ pwd
/home/사용자ID
ls 디렉토리의 내용을 보여주는 명령어
옵션 -l을 사용하면 long listing format으로 현 디렉토리 안에 파일과 하위 디렉토리를 보여준다.
$ ls -l
drwx------ 12 사용자1 사용자1 4096 Jul 4 11:31 .
drwxr-xr-x 17 root root 4096 Dec 28 2023 ..
현재 디렉토리가 비어 있으면 .과 .. 두 개만 보이는데, .은 현재 디렉토리 그리고 ..은 상위 디렉토리를 의미한다. ls ../을 입력하면 상위 디렉토리의 내용을 보여준다.
$ ls ../
사용자1 사용자2 사용자3 사용자4
root directory의 내용을 볼려면 ls /을 입력한다.
$ ls /
bin de etc lib media opt root sbin sys usr
boot dev home lib64 mnt proc run srv tmp var
옵션 -a를 사용하면 숨겨진 파일(hidden file)까지 보여준다. 숨겨진 파일은 그 이름이 .으로 시작한다.
$ ls -a
. .bash_history .bash_profile .cache
.. .bash_logout .bashrc
그 외에 자주 사용되는 ls의 option으로는 -h, -r, -R -t 등이 있다. ls의 다양한 option에 대해서 알려면 --help 옵션이나 man 명령어를 사용한다. man 명령어는 manual을 의미하며, ls 이외에도 다양한 리눅스 명령어 사용법을 확인하는데 유용하게 이용될 수 있다. man 명령어의 설명 페이지가 긴 경우 다음 페이지로 갈려면 f, 이전 페이지로 갈려면 b, 매뉴얼 페이지를 빠져나갈려면 q를 입력한다.
$ ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape print C-style escapes for nongraphic characters
--block-size=SIZE scale sizes by SIZE before printing them; e.g.,
'--block-size=M' prints sizes in units of
1,048,576 bytes; see SIZE format below
$ man ls
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default). Sort entries alphabeti‐
cally if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all
do not ignore entries starting with .
-A, --almost-all
do not list implied . and ..
(1) 디렉토리의 생성과 이동, 삭제
mkdir 디렉토리 생성
Test라는 디렉토리를 생성하려면
$ mkdir Test
$ ls -l
drwxrwxr-x 2 사용자ID 그룹ID 6 Jul 4 14:26 Test
cd 다른 디렉토리로 이동
rmdir 디렉토리 삭제. 현재 디렉토리 안에 파일이나 하부 디렉토리가 존재하면 삭제되지 않음.
(2) 절대경로 vs 상대경로
(3) 파일 생성/이동/삭제
touch 파일이 없으면 크기가 0 bite인 파일 생성. 파일이 있으면 생성 시간 업데이트
stat 파일 상태 확인
cp 파일 복사
mv 파일 이동
rm 파일 삭제
(4) 파일 속성 변경
chmod u+rw my.txt
chmod u-w, o+r test.exe
(5) 파일 내용 확인
cat
echo 텍스트를 화면 상에 출력
echo $HOME
echo $PWD
(6) 리다이렉팅 그리고 파이프라인
test.exe > test.out
cal > october.txt
test.x < input.dat > output.dat
mail mark < letter
who | grep "sedu"
(7) 파일 생성
cat > date.x 타이핑후 엔터를 치면 문자열 입력 가능함. 입력을 다하면 ctrl+c 키를 눌러서 파일 저장후 빠져나옴
(8) 기타
which 명령어의 경로
whereis 실행파일, 소스, man page의 경로
whatis 명령어가 하는 일을 간단히 설명
clear 화면 삭제