리눅스는 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
: 캐시, 로그 등 시스템 구동 간 계속 내용이 바뀌는 내용들