리눅스 연습하기

ROK·2021년 12월 30일
0

리눅스를 연습하면서 혼자서 여러 명령어 써보고 정리하고 메모하는 페이지

순서가 엉망임

리눅스는 UNIX라는 운영체제를 본떠 만들어졌다
UNIX의 철학 중 하나 "모든 것은 파일이다"
윈도우에서는 각 시스템 설정값이 레지스트리에 들어있지만, 리눅스는 설정값 또한 파일이며, 키보드, 마우스 등의 하드웨어 기기들도 파일로서 접근이 가능하다

참고 사이트 리눅스/Linux 일반


명령어

셸 환경

history : 셸 명령어 이력 출력

man : 프로그램의 메뉴얼 페이지 출력

which : 명령어의 전체 경로를 출력

$ which ls
/bin/ls
$ which bash
/bin/bash

export : 셸 변수나 함수를 현재 환경으로 내보낸다

env : 명령어가 제공된다면 해당 명령어를 새로운 환경에서 실행
명령어가 없으면 현재 환경 정보를 출력

$ env
SHELL=/bin/bash
NV_LIBCUBLAS_VERSION=11.6.1.51-1
NVIDIA_VISIBLE_DEVICES=all
KUBERNETES_SERVICE_PORT_HTTPS=443
NV_CUDNN_PACKAGE_NAME=libcudnn8
KUBERNETES_SERVICE_PORT=443
aiffel_random_id=wnpqyu188m
WLD4T1IEG5IVFFIY3KSXVSSCO_PORT_8887_TCP_ADDR=10.88.1.206
HOSTNAME=wld4t1ieg5ivffiy3ksxvssco-5c447cc965-57h5m
PYTHON_VERSION=3.9.7
LANGUAGE=en_US:en
....중략....

텍스트 처리 관련

echo : 메아리

$ echo hello?
hello?
$ echo $PATH
/opt/conda/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

$PATH' : 단어 앞에 $가 붙으면 환경변수(environment variable)를 의미 (환경변수란 운영체제가 프로세스 단위로 사용하는 변수) PATH
echo $PATH : PATH라는 이름의 환경변수($) 값 출력

export : 셸 변수나 함수를 현재 환경으로 내보냄

$ echo $PATH
/opt/conda/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ export PATH=/aiffel:$PATH
$ echo $PATH
/aiffel:/opt/conda/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PATH 환경변수에 디렉토리 경로를 추가하면 셸이 특정 프로그램을 실행할때 참조할 수 있게 된다

cat : 하나 이상의 텍스트 파일을 순서대로 출력한다

sort : 입력된 텍스트를 줄 단위로 정렬한다
less : 텍스트 파일의 내용을 자유롭게 조회하고 검색한다
head : 텍스트 파일의 앞 몇 줄만 출력한다
tail : 텍스트 파일의 마지막 몇 줄만 출력한다
cut : 텍스트를 구분자(delimiter)에 따라 나눈다
uniq : 텍스트 중 중복 값들을 제거
grep : 정규식을 활용해 텍스트를 검색한다
grep : 입력으로 전달된 내용 중 특정 문자열을 포함한 라인만 선택해서 출력
pip list | grep tensorflow와 같이 다른 명령어와 결합해 사용 |필요
wc : 텍스트를 단어, 줄, 문자 등 단위로 센다
comm : 텍스트 파일을 비교
zcat : 압축된 텍스트 파일을 출력
sed : 정규식을 활용해 텍스트를 변형한다
awk : 텍스트를 스캔하고 변형한다

파일 제어 및 이동

ls : 폴더 안에 어떤 파일/폴더가 있는지 목록을 볼 수 있다
ls를 사용해서 나오는 내용은 8가지로 구분 가능

$ ls
Downloads django snap

cd : Change Directory의 약자 말 그대로 폴더 이동

$ cd .. // 이전 폴더
$ cd 폴더명 // 해당 폴더로 이동
$ cd // home 디렉터리로 이동

cp : 파일을 복사
mv : 파일을 이동
rm : 파일을 삭제, 폴더를 삭제하기 위해 -r(recursive)옵션을, 빈 폴더가 아니더라도 내부까지 삭제하려면 -f(force)옵션을 함께 사용해야 한다

chown : 대상 파일의 소유 사용자와 그룹을 변경한다
chmod : 대상 파일의 권한을 변경한다
change own/mode

find : 파일을 찾는다

pwd : Print Working Directory의 약자
내가 위치한 디렉토리 위치를 출력

$ pwd
/home/user

ln : 파일에 대한 링크를 생성
touch : 파일 접근 및 수정 시간을 변경, 빈 파일을 만드는데 사용 가능
tar : 파일 및 폴더를 하나의 아카이브 파일로 통합하고 압축한다
mount : 새로운 저장장치를 파일시스템으로서 추가한다
rename : 여러 파일들의 이름을 규칙에 따라 한번에 변경
df : 파일시스템의 남은 용량을 표시한다.

시스템 및 프로세스 제어

ps : 현재 터미널과 관련된 프로세스 목록을 출력
ps -ef : 모든 터미널에서 현재 실행중인 프로세스 목록 및 부가정보를 출력

$ ps -ef
UID          PID    PPID  C STIME TTY          TIME CMD
root           1       0  0 03:41 ?        00:00:00 /bin/sh -c jupyter notebook  --NotebookApp.token=$DEFAULT_JUPYTER_TOKEN --ip=0.0.0.0 --all
root           7       1  0 03:41 ?        00:00:09 /opt/conda/bin/python /opt/conda/bin/jupyter-notebook --NotebookApp.token= --ip=0.0.0.0 --
root           8       1  0 03:41 ?        00:00:00 ttyd -p 8887 /bin/bash
root          18       8  0 05:46 pts/1    00:00:00 /bin/bash
root          20      18  0 05:46 pts/1    00:00:00 ps -ef

PID : process ID
TTY : 해당 프로세스가 붙어있는 teletype(터미널)

sudo : 최고 관리자 권한으로 명령 실행

apt-get : APT 패키지 관리자를 통해 공인 저장소에서 패키지를 가져다 설치하거나 제거한다

Kill : PID에 해당하는 프로세스에 시그널(신호)을 보냄

fg : 배경에서 실행되는 작업을 전경(foreground)로 가져운다
bg : 실행중인 작업을 배경(background)로 보낸다
jobs : 전경 및 배경 작업의 목록을 표시

기타

ssh : 원격으로 셸에 접속
tmux : 여러개의 셸 세션을 관리하고, 터미널 접속이 끊어지더라도 셸 세션을 유지
watch : 이어지는 명령을 주기적으로 실행하여 표시한다
curl : 주어진 URL과 통신
wget : 네트워크를 통해 파일을 다운로드한다
scp : SSH를 통해 원격으로 파일을 전송
ssh-keygen : SSH 공개키 비밀키 쌍을 생성
ssh-copy : SSH 공개키를 해당 서버에 등록한다
rsync : 원격으로 파일을 동기화한다
xarg : 명령어를 구성하여 실행한다. 이전 명령에서 인자를 넘겨받아 실행하거나, 다중 프로세스를 사용하여 명령을 병렬로 실행하는 등의 작업이 가능
cron : 주기적으로 실행될 명령을 등록
htop : 프로세스 목록 및 자원 사용량을 시각적으로 표시


패키지

우분투 리눅스에서 새로운 프로그램을 설치하거나 기존에 설치된 프로그램을 업데이트 하는 법
인터넷에서 설치 파일을 다운로드 받아 직접 실행할 수 있지만 우분투는 공식적으로 APT(Advanced Packaging Tool)라는 패키지 관리자(Package manager)를 제공한다

패키지 관리자란 공인 저장소에서 프로그램과 라이브러리를 패키지 단위로 설치하고 관리할 수 있도록 하는 프로그램

Unbuntu에는 APT말고도 Snap이라는 새로운 프로그램도 있으며, CentOS의 YUM(Yellowdog Updater Modified), Red Hat 계열의 RPM(Red Hat Package Manager)등 각 리눅스 계열 운영체제는 다양한 기본 패키지 관리자를 제공한다
운영체제 상 패키지 관리자 이외에 파이썬의 PIP(Python Package Installer) 등 프로그램 언어상에서 제공되는 경우도 있다


디렉터리

최상위폴더 root 하위 디렉터리
/home : 사용자별 홈 디렉터리들이 있는 곳
/root : 최고 관리자 계정의 홈 디렉터리
/mnt : 저장장치(HDD,SSD)가 붙는 위치
/media : 이동식 미디어(USB 드라이버)가 붙는 위치
/tmp : 재부팅 시 삭제될 임시 파일들을 저장하는 폴더
/dev : 컴퓨터에 연결된 하드웨어 및 가상기기(device)들을 가리키는 파일들
/proc : 현재 실행 중인 프로세스들을 가리키는 파일들
/etc : 각종 설정 파일들
/bin : 실행 가능한 프로그램들(binary)들
/sbin : 시스템 관리용 프로그램들
/usr : 다중 사용자 모드에서 사용 가능한 파일 및 프로그램들 (root 계정만 있는 단일 사용자 모드에서는 사용불가)
/var : 캐시, 로그 등 시스템 구동 간 계속 내용이 바뀌는 내용들

profile
하루에 집중하자

0개의 댓글