생활코딩 강의를 듣고 공부한 내용을 정리한 문서.
pwd
man <명령어>
명령어의 메뉴얼을 보여준다. --help
옵션보다 상세한 메뉴얼을 제공해준다.
/<검색어>
: 메뉴얼 내 찾기 기능n
키를 입력하면 찾은 단어 중 다음에 등장하는 단어로 화면을 움직인다.q
를 입력하면 메뉴얼을 종료한다."create directory in linux"
파일 편집기
nano는 초급자한테 추천, vi는 중고급자에게 추천
brew help
# brew 간이메뉴얼
brew search <프로그램명>
# 프로그램을 검색해줌
brew list
# brew로 설치된 프로그램 list를 보여줌
brew install <프로그램명>
# 프로그램 설치
brew uninstall <프로그램명>
# 프로그램 삭제
brew upgrade <프로그래명>
# 프로그램 업그레이드
brew upgrade
# 설치된 모든 프로그램 업그레이드
brew update
# homebrew 검색 목록 최신화
Redirection : 방향 바꾸기
1. the redirection of standard output(stdout)
1>
혹은 1
이 생략된 >
을 사용한다.
ls -l > result.txt
# result.txt 파일에 ls-l 결과값이 저장됨
2>
를 사용한다.rm cp.txt
rm cp.txt 2> error.log
# 에러문구가 error.log에 저장됨
rm cp.txt 1> result.txt 2> error.log
# 결과가 있다면 result.txt에 결과가 저장되고, error가 발생하면 error.log에 저장된다.
출처 : https://slideplayer.com/slide/5126304
<
을 사용한다
cat < hello.txt
# cat이란 프로그램에 hello.txt의 내용을 입력
는 나중에 듣자.
shell은 껍데기, kernel은 알맹이란 뜻이 있다.
둘 다 shell이다.
echo $0
를 입력한다.예를 들어, zsh(지셸)은 cd
명령어에서 tab
리를 눌러서 경로 자동완성 기능, 혹은 같은 레벨의 있는 다른 디렉터리로 이동하는 기능을 제공한다.(cd A B
A에서 B 디렉터리로 바뀜)
script는 대본이란 뜻을 갖고 있다.
shell script는 여러개의 명령을 순차적으로 실행하는 것
backup
파일#!/bin/bash
if ! [ -d bak ]; then
mkdir bak
fi
cp *.log bak
$ chmod +x backup
: backup
파일에 실행 권한 부여
$ ./backup
: 백업파일 실행
mkdir
와 같은 명령어들은 모두 프로세스로서 동작한다.
ps aux
백그라운드 프로세스까지 모두 보여준다.ctrl + Z
로 백그라운드 실행jobs
: 백그라운드로 실행 중인 목록을 보여줌fg
+
기호가 붙은 프로세스가 타겟임-
기호가 붙어 있는 프로세스는 다음으로+
가 될 후보 프로세스임fg %숫자
를 입력하면 jobs 중 숫자에 해당하는 프로세스를 포그라운드로 전환마지막에 &
를 붙여준다
ex) 아래 명령어를 치고 jobs를 쳐보면 백그라운드에서 running이라고 뜨는 것을 확인할 수 있다.
ls -alR / > result.txt 2> error.log &
/etc/init.d
에 저장됨service
명령어로 키고 끈다.sudo service <APP NAME> start/stop
/etc/rc3.d
: CLI 환경에서 자동실행/etc/rc5.d
: GUI 환경에서 자동실행/etc/rc3.d
에서 파일 리스트를 보면 S01<APPNAME>
이런 식이다.S
로 시작하는 파일은 부팅시 자동실행되는 파일K
로 시작하는 파일은 부팅시 실행되지 않음crontab
-e
: 에디터tail -f FILE
FILE의 변화를 팔로우하며 출력해준다.
~/.bashrc
는 쉘이 실행될 때 자동으로 읽혀진다.id
나는 누구인지 알려줌
who
컴퓨터에 접속해있는 사용자를 알려줌
su
passwd
sudo passwd root
useradd
sudo useradd -m <USERNAME>
/home/<USERNAME>
디렉터리를 같이 만들어준다usermod
sudo usermod -a -G sudo <USERNAME>
유저가 파일, 디렉터리에 대해서 읽고 쓰고 실행하는 것에 대한 권한을 관리할 수 있다.
-rw-rw-r-- 1 ubuntu ubuntu 3 May 19 11:29 perm.txt
위는 ls -l perm.txt
명령어의 결과이다. 이 결과를 다음과 같이 나누고 분석해본다.
[type]- | [access mode]rw-/rw-/r-- | 1 | [owner]ubuntu [group]ubuntu | 3 May 19 11:29 | perm.txt
-
: 파일을 의미한다d
: 디렉터리를 의미한다chmod
로 access mode를 수정할 수 있다-
은 해당 권한이 없다는 것이다.r
: read, cat nano 등으로 읽을 수 있음w
: write, echo nano 등으로 쓸 수 있음x
: executechmod
chmod ugoa|+-=|perm FILE
예를 들어
chmod o-r perm.txt
라고 하면 perm.txt 파일에서 other의 읽기 권한을 삭제한다.
chmod -R
-R
옵션은 디렉터리 안에 있는 모든 디렉터리에 대해서 권한을 한 번에 수정할 때 사용한다.
chmod
정리chmod 444 perm.txt
라고 하면 4는 이진수로 100(2)이므로 r--를 의미한다. 따라서 이 명령어는 perm.txt에 대해서 u, g, o에게 모두 읽기 권한만 허가하는 것이다.자주 사용되는 기능은 아니어서 일단 넘긴다.
linux
ip addr
에서 inet이라고 적힌 부분을 보면 됨
MAC
$ ipconfig getifaddr en0
$ ifconfig | grep inet
$ curl ipinfo.io/ip
혹은 $ curl ifconfig.me
curl
은 해당 웹페이지의 html 파일을 다운받아 터미널에 출력한다.같은 wifi를 사용하는, 즉 같은 외부 ip를 사용하는 기기들은 서로의 사설 ip에 접속할 수 있다. 마치 내선 전화를 사용하는 한 회사 안에서 한 부서가 다른 부서에게 내선 번호만을 이용해서 전화를 걸 수 있는 것처럼.
web server는 server에 설치된 프로그램. client의 request에 대해서 web server 프로그램이 server에 설치된 request의 파일(가령 html)을 찾아서 client에게 response한다.
WEB server 중 apache를 사용하며, 맥은 기본적으로 설지되어 있다.
# 서버 활성화
$ apachectl start
# 서버 비활성화
$ apachectl stop
# 서버 재시작
$ apachectl restart
elinks는 셸에서 동작하는 인터넷 브라우저이다.
$ elinks <url>
을 입력하여 웹 페이지를 읽을 수 있다.
127.0.0.1
는 자신을 뜻하는 ip이며 변하지 않는다. 이 ip의 도메인은 localhost
이다.
따라서 다음 두 명령어의 결과는 동일한 웹페이지를 보여준다.
$ elinks <사설 ip>
$ elinks 127.0.0.1
웹서버가 클라이언트가 요청한 페이지를 서버에서 찾는데, 찾는 것이 이루어지는 최상위 폴더가 설정되어 있다. 이 최상위 폴더를 document root라고 한다.
웹서버에는 client request에 대한 response를 기록한 .log 파일과 웹서버에서 발생한 error를 기록한 error.log 파일이 존재한다.
서버시장에서 linux가 앞도적 다수여서 중요함. 인터넷을 통해 사물을 제어하는 사물인터넷(IoT) 안에 설치되어 있는 컴퓨터 또한 linux. client 상태에서 server 컴퓨터를 원격제어할 때 SSH(Secure Shell)를 사용하면 된다.
이를 위해선 client에는 SSH client 프로그램이, server에는 SSH server 프로그램이 설치되어 있어야한다. 유닉스 계열의 컴퓨터는 웬만하면 SSH가 기본적으로 설치되어 있다.
포트는 65,000개가 존재한다.
1024까지의 포트를 말하며, 매우 잘 사용되는 유명한 프로그램들이기에 표준으로 사용한다. 대표적으로 22번 포트는 ssh, 80번 포트는 웹서버를 사용한다. 보안상의 이유 등으로 해당 프로그램의 설정에서 포트는 바꿀 수 있다.
외부에서 사설 ip에 접속하는 것은 어려운데, 같은 공유기를 사용하는 기기들이 같은 사설 ip를 갖는 경우가 대다수이기 때문이다. 이를 Port Forwarding으로 해결할 수 있다.
라우터 역시 port를 갖고 있다. 외부에서 라우터의 특정 포트로 접속하면 라우터는 라우터에 연결된 특정 컴퓨터 특정 포트로 연결해준다. 이를 Port Forwarding이라 한다.