1년간 회사를 다니면서 AWS와 Linux에 대해서 많이 접하고 사용해왔었습니다
하지만 정작 사용하는 Linux가 무엇인지 왜 사용하는지에 대해서 알지못했습니다.
오늘 Linux에 대해서 짧게나마 정리하고자합니다.
Linux는 리누스 토발즈(Linus Benedict Torvalds)가 만든 Unix기반의 OS입니다.
리누스는 대학시절 Unix 기반의 OS를 자신의 집에서 사용하고자 만든 OS입니다.
실제로는 리눅스 커널을 개발하였습니다.
그 시절 많은 OS가 존재하였고 각자만의 방식을 가지고 있었습니다.
이러한것을 통일하고자하여 GNU라는 OS를 만들게 되었고 소스의 오픈을 장려하기 위해 GPL이라는 라이센스를 만들게 됩니다.
GNU는 OS를 통합할수 있는 커널이 필요하였는데 커널로 Linux를 사용하게 되었고 GNU/Linux라는 이름으로 만들어졌습니다. 많은 단체의 기여로 현재 Linux는 운영체제로서 자리매김하였고 GNU/Linux라는 말보다 Linux를 더 많이 사용하게됩니다.
Unix기반의 OS로 Unix의 shell 커멘드를 포함하고 있으며 Linux는 Bash 커멘드를 사용하고있습니다.
- 모든 것은 파일이라는 철학을 따름
- 전역 네임스페이스 사용
- sudo apt-get update / 업데이트
- sudo apt-get install 패키지명 / 설치
- sudo apt-get remove 패키지명 / 삭제
- sudo apt-get --purge remove 패키지명 / 설정포함 삭제
# whoami
ubuntu
# pwd
/home/ubuntu
# pwd
/home/ubuntu
# cd ..
# pwd
/home
# cd ~ or cd
#pwd
/home/ubuntu
# ls
app
# ls -al (ll)
total 40
drwxr-x--- 5 ubuntu ubuntu 4096 Jan 3 10:30 ./
drwxr-xr-x 3 root root 4096 Jan 3 08:45 ../
-rw------- 1 ubuntu ubuntu 14 Jan 3 08:47 .bash_history
-rw-r--r-- 1 ubuntu ubuntu 220 Jan 6 2022 .bash_logout
-rw-r--r-- 1 ubuntu ubuntu 3771 Jan 6 2022 .bashrc
drwx------ 2 ubuntu ubuntu 4096 Jan 3 08:47 .cache/
-rw------- 1 ubuntu ubuntu 20 Jan 3 09:04 .lesshst
-rw-r--r-- 1 ubuntu ubuntu 807 Jan 6 2022 .profile
drwx------ 2 ubuntu ubuntu 4096 Jan 3 08:45 .ssh/
-rw-r--r-- 1 ubuntu ubuntu 0 Jan 3 09:00 .sudo_as_admin_successful
drwxrwxr-x 4 ubuntu ubuntu 4096 Jan 3 10:30 app/
-rw-r--r-- 1 ubuntu ubuntu 807 Jan 6 2022 .profile
drwx------ 2 ubuntu ubuntu 4096 Jan 3 08:45 .ssh/
-rw-r--r-- 1 ubuntu ubuntu 0 Jan 3 09:00
| 읽기 | 쓰기 | 실행 | |
|---|---|---|---|
| 표기 | r | w | x |
| 최대 | 4 | 2 | 1 |
# drwx------ 2 ubuntu ubuntu 4096 Jan 3 08:45 .ssh/
# chmod 744 .ssh
drwxr--r-- 2 ubuntu ubuntu 4096 Jan 3 08:45 .ssh/
# cat text.txt
text 파일입니다
# mkdir bin
# 옵션
- r 하위 디렉토리를 포함한 모든 파일 삭제
- f 강제로 파일이나 디렉토리 삭제
# rm text.txt
# rm -rf bin
# 옵션
- i 대소문자의 구별 X
- v 패턴을 포함하지 않는 라인을 출력
- n 검색 결과의 각 행 번호를 넣는다
- l 파일명만 출력한다
- c 패턴과 일치하는 라인의 개수만 출력
- r 하위 디렉토리까지 검색
# ps
PID TTY TIME CMD
1434 pts/0 00:00:00 bash
2281 pts/0 00:00:00 ps
# 옵션
- a 모든 사용자의 프로세스 출력
- u 프로세스 소유저의 상세정보 출력
- l 프로세스 상게 정보 출력
- x 모든 프로세스를 출력 / 데몬 프로세스를 확인 (aux를 함께 사용)
- e 프로세스와 관련된 환경 변수 정보를 출략
- f 프로세스간 관계 출력
# kill 5233
# kill -9 5233
# lsof -p:8080
# 현재 포트8080으로 실행중인 프로세스를 정보를 출력합니다
# java -jar application.jar &
[1] 12
# [1]은 작업 번호 (job number), 12은 pid
# cp text1.txt text2.txt
# cp -rf * newDir / 디렉토리 복사
기본적인 명령어를 알아봤는데 Linux는 현재도 계속해서 업데이트가 되고 있으며 개발을 하면서 계속 사용하게될 OS입니다.
더 유용하고 많은 명령어가 존재하기에 필요할때 찾아 사용하면 좋을거 같습니다.