Index: 유데미 리눅스
87. Linux File Editor
- vi
- ed
- ex
- emacs
- pico
- vim - vi의 업그레이드 버전
자주 사용되는 키
i: 삽입 모드a: 한 칸 띄고 삽입 모드esc: 모드 나가기r: 대체 / r 누르고 바꿀 글자 정하면 한 글자 바꿔줌x: 한 글자 삭제d: 라인 삭제:q!: 저장 안하고 나가기:wq!,zz: 저장하고 나가기u: 되돌리기o: 밑에 빈 줄 추가 및 삽입 모드 들어감/: 작업 모드에서 키워드 입력 시 검색 가능
88. vi 와 vim 차이
vim이 더 쉽긴 함 근데 vi는 리눅스 출시때부터 있던 거라 옛날 버전에서는 안 되는 경우 있음 vim은 vi의 모든 기능에 다른 기능 추가된 거라 vim 배우면 vi는 당연히 사용 가능함
vi
- installed more places
- shorter name
- simpler
- small
- ubiquitous
- intuitive command language
- learning curve
- powerful once learned
(볼드는 vim도 해당되는 것)
vim
- completion
- spell check
- comparison
- merging
- unicode
- (vimdiff)
- regular expressions
- scripting languages
- plugins
- GUI
- folding
- syntax highlighting
openvim 튜토리얼- 튜토리얼 시켜줌 vimgenius - 퀴즈형식 vim-adventures 게임형식
89. “sed” 커맨드
sed
- 파일의 string을 다른 걸로 교체해줌
- 라인 찾거나 삭제 가능 (많은 줄 할 때 자동화해주는 느낌인듯)
- empty line 삭제
- To replace tabs with spaces
- Show defined lines from a file
- substitute within vi editor
1. 내용 바꿔서 출력하기
sed 's/Kenny/Lenny/g' <파일이름>
: 해당 파일의 모든 Kenny를 Lenny로 바꿈. g는 global로, 모든 Kenny를 지정
: 하지만 이렇게 하면 변경된 내용을 출력할 뿐, 파일 내용은 그대로
2. 파일 내용까지 바꾸기
옵션 -i 추가
sed -i 's/Kenny/Lenny/g <파일이름>
3. 단어 삭제하기
두번째 칸 비우기
sed 's/Costanza//g' <파일이름>
4. 단어 포함된 라인 삭제하기
d = delete 추가
sed '/Seinfeld/d' <파일이름>
5. 빈 줄 삭제하기
**정규표현식 ^ 사용** **d = delete** `sed '/^/d’ <파일이름>`
^→ 문자열의 시작$→ 문자열의 끝
6. 특정 줄 삭제하기
sed '1d' <파일이름> : 첫번째 줄 삭제
sed '1d, 2d <파일이름> : 1, 2번째 줄 삭제
7. 탭 삭제하기
sed '/\t/ /g' <파일이름>
\t: 탭 ⇒ 탭을 공백으로 만들기 반대로 넣기도 가능.
8. 특정 줄만 출력
sed -n 12,18p <파일이름> : 1218 줄 출력
18줄만 빼고 출력sed 12,18d <파일이름>: 12
9. 각 줄 사이에 빈 줄 넣기
sed G <파일이름>
10. 특정 줄만 제외하고 단어 바꾸기
sed '8!s/seinfeld/S/g' <파일이름>: 8번째 줄의 seinfeld만 빼고 S로 바뀜
90. 유저 계정 관리
커맨드
useradd
groupadd
userdel
groupdel
usermod
파일
/etc/passwd
/etc/group
/etc/shadow
예시)
useradd -g superheros -s /bin/bash -c "user description" -m -d /home/spiderman spiderman
-s: give a shell envrionment
-c: define the user description
-m, -d: define the user home directory, the user itself and the name of the user
실습
root 계정으로 바꾸기 → su - (비번 root)
- 사용자 생성
useradd <유저네임> - 사용자 생성 확인
id <유저네임>: uid, gid 출력 (유저 생성 시 그룹도 같이 생성됨)

-
사용자 생성 확인 : home 디렉토리 가서
ls -l
-
그룹 생성:
groupadd <그룹네임> -
그룹 생성 확인:
cat /etc/group마지막에 추가되었는지 확인

- 유저 삭제
userdel <유저네임>-r옵션은 사용자의 홈 디렉토리까지 삭제

- 그룹 삭제
groupdel <그룹이름> - 그룹 삭제 확인
cat /etc/group
출력같은 거 할 때 다양한 명령어 써보는 것도 좋을 듯
- 유저 수정
usermod-a, —append : 유저를 그룹에 추가.-G옵션과 같이 써야 함.-b, —badname: 기준에 맞지 않는 이름도 허락-c, —comment : 유저의 password 파일의 comment field에 새 값 추가-d, —home: 유저의 새 로그인 디렉토리-e: —expiredate: 유저 계정의 사용 만료날짜 (YYYY-MM-DD)-f: —inactive : 패스워드가 만료된 후 계정이 사용불가될 때까지의 기간 (0이면 패스워드 만료 후 바로 계정이 사용불가됨. -1이면 이 기능을 비활성화)
8-1. 유저를 다른 그룹에 추가
useradd spiderman
id spiderman
usermod -G superheros spiderman
→ spiderman이라는 유저 생성 후 superheros라는 그룹에 추가
결과: 기존 그룹과 새 그룹 둘 모두 포함되게 됨

ls -ltr로 보면 spiderman의 그룹이 여전히 spiderman임

자신만의 그룹을 가지면서 superheros 그룹에도 포함된 것

- 유저 그룹 바꾸기
chgrp -R [그룹명] [파일명]/chgrp -R superheros spiderman
-R: 지정한 디렉토리의 하위에 있는 모든 파일도 함께 지정한 그룹으로 변경
etc폴더 파일 살펴보기
cat /etc/passwd: 사용자 정보 볼 수 있음
- 첫번째 : 사용자 이름
- 두번째: 패스워드(x는 shadow 파일에 암호화되어 저장되어 있다는 뜻)
- 세번째: User ID
- 네번째: Group ID
- 다섯번째: description
- 여섯번째: home 디렉토리 경로
- 일곱번째: 유저가 사용하는 shell

cat /etc/group: 그룹 정보를 담은 파일
- 첫번째: 그룹 이름
- 두번째: 그룹 비밀번호
- 세번째: GID
- 네번째: 해당 그룹에 속해있는 다른 그룹

/etc/shadow 파일
cat /etc/shadow: 실제 패스워드 정보 담긴 파일. 보안에 매우 중요한 파일 !

필드 설명
root:$6$IjQpzV6K7afv5/iZ$VWQdOfzavvgCqzQ92sD36aRHhJbjlfqchebm3lPkk0fpIdFuna0bZA8rDTTQJYqlcT6GY0pqr9q0Jm0x74ixq/::0:99999:7:::
gyeong:$6$/44ybHJc4O.xjo5v$ZntPQpmsCDXROd6ddHgZd7JbAjXltDpy71WB.cO3e27.rvOKrjd5VnomxUMBZzllY70f25Rh4RHNHg5.U25CS0:20038:0:99999:7::: ironman:rounds=100000fYYph64T1CaKNc4GG3/Rl/inF/YEmIiJuJ5LEn6C/q2.47sPowgEPTBQ/nUVIdmc8SVkylBn8mdWdAbd/iO5J0:20299:0:99999:7:::`
- 첫 번째: 사용자 계정명
- 두 번째: 암호화된 패스워드.
$로 필드가 구분되어 있음.
**$ algorithm_id $ salt $ encrypted_password **
algorithm_id: 암호학적 해시의 id
- 1: MD5(가장 취약한 일방향 해쉬로 요즘엔 쓰지 않음)
- 2: BlowFish
- 5: SHA-256
- 6: SHA-512
salt: 각 해시에 첨가할 랜덤값
encrypted_password: 알고리즘과 salt로 패스워드를 암호화한 것.
- 이 필드가 * 이면 잠긴 상태고 로그인 불가, 별도 인증방식으로 로그인 가능
- 이 필드가 ! 이면 잠긴 상태이고 로그인 불가 or 사용자 생성 후 패스워드 설정 안 한 상태
- 이 필드가 비어 있으면 패스워드가 설정되지 않았지만 로그인 가능
- 세 번째: 마지막으로 패스워드를 변경한 날. 1970년 1월 1일 기준을 표시. gyeong의 경우 20038일 지남
- 네 번째: 패스워드 최소 사용기간. 변경 이후 최소 이 정도가 지난 이후 또 변경 가능
- 다섯 번째: 패스워드 최대 사용기간. 마지막 변경 이후 만료일수. 90일 권장
- 여섯번째: 패스워드 만료 전에 경고할 경고 일수
- 일곱번째: 만료된 이후 계정이 잠기기 전까지 비활성 일수(date). 해당 기간 동안 패스워드 변경해야 잠기지 않음
- 마지막: 계정 만료일. 1970년 1월 1일 기준으로 일수로 표시
- 매개변수 지정해서 유저 생성
useradd -g superheros -s /bin/bash -c "Ironman Character" -m -d /home/ironman ironman
-g: 그룹 지정(이미 생성되어 있는 그룹)-s: 사용자가 사용할 shell-c: 사용자 description-m: 홈 디렉토리 생성 (레드햇 계열은 자동으로 되지만 다른 배포판은 안됨)-d: 홈 디렉토리 지정. 최종 디렉토리만 생성하므로 중간 경로 있으면 미리 생성해야 함

- 사용자 비밀번호 생성
passwd ironman: 사전 상에 있거나 짧거나 하면 BAD 패스워드라고 뜨는데 되긴 됨
97. Enable Password Aging
중요한 파일 : /etc/login.defs
다시 하니까 기억 안난다. 리눅스 접속 명령어 : gyeong@192.168.219.110 패스워드: password root 비밀번호: root
chage 명령어 (change age, 유저별)
- 현재 패스워드 설정 보기
more /etc/login.defs
→ 만약 전체 유저 패스워드 설정을 변경하고 싶다면 이 파일을 변경

원하는 부분만 보고 싶다면 → vi 로 열어서 ‘/찾고 싶은 키워드’ 치면 됨

- 유저별 password 설정 변경하기
chage [-d lastday] [-m mindays] [-M maxdays] [-I inactive] [-E expiredate] [-w warndays] user
아래와 같이 설정이 변한 걸 볼 수 있음.

98. Switch Users and sudo Access
su - username: 다른 사용자 계정으로 전환 (그냥 su - 하면 root 됨, su root도 됨)sudo command: 관리자 아닌 유저가 관리자 권한으로 실행, 해당 유저가 권한이 있어야 함visudo: 사용자가 특정 명령을 실행할 수 있는 권한을 구성하는 etc/sudoers 파일을 편집 (파일을 편집하다가 문법 오류가 나면 컴파일이 안 돼서 sudo 사용 불가. visudo를 쓰는 게 좋음)
File
- /etc/sudoers
visudo를 치면 아래와 같이 sudoers 파일을 vi로 연다. /wheel을 검색한다.

- Allow root to run any commands anywhere 에서 root 밑에 사용자 이름 추가해서 똑같이 쓰면 root와 같이 모든 커맨드 사용 가능, 그러나 이건 사용자 수준에서 접근하는 것
- 그 밑에, wheel이라는 그룹에 사용자를 추가하면 마찬가지로 모든 커맨드 사용가능, 그룹 수준 → visudo 명령어로 이걸 하면 됨
usermod -aG wheel babubutt: 이미 있는 사용자(-a) babubutt를 wheel 그룹에 추가(-G)

% 참고: wheel 그룹은 bit wheel 이라는 관용어구에서 유래. root 비밀번호를 알더라도 wheel 그룹에 속해 있지 않으면 sudo 명령어를 사용할 수 없음.
99. Monitor Users
옵션과 함께 사용하는 게 좋음
-
users: 현재 로그인한 사용자 이름 목록록 -
who: 시스템에 로그인한 사용자 보여줌. 터미널 하나 더 열면 하나 더 생김.
-
last: 첫날부터 로그인한 사용자의 세부 정보
-
w: who와 비슷하지만 좀 더 자세한 정보 제공
-
finger: 시스템에 직접 설치해야 하는 프로그램. → 이미 깔려있는듯?
-
id: 그냥 실행하면 현재 사용자 정보, id [사용자명]하면 해당 사용자 정보 알려줌.

Lab: 팀 계정 관리 및 비밀번호 정책 시행
- Examine existing user and group information
idgroupscaton passwd filecaton group file- account details / group information
- Review password and account details
caton passwd filegrepwith labsuserlswith long format on /etc library- Account and authentication
- Check accees rights and environment
whoamiechoon home variableechoon shell variableid
- Monitor user activity
whois logged in- what sessions are active
- login history
whowlast
101. Talking to Users
리눅스에 로그인한 다른 유저들에게 메시지 보내기 (이게 된다니)
먼저 ssh로 다른 유저 이름으로 접속한다. (접속한 후 계정을 바꿔도 who에는 처음 접속한 유저로 나옴)

나는 ssh에서 babutbutt으로 로그인했다.
102. setuid, setgid and sticky bit
중요: 이 비트들은 c언어 exe만 적용되며 bash shell scrip는 적용 안 됨
-
setuid:chmod u+s xyz.shchmod u-s xyz.sh
-
setgidchmod g+s xyz.shchmod g-s xyz.sh
-
sticky bit
-rwxrwxrwt의 마지막 t 자리에 할당됨. 예시)/tmp디렉토리
-
setuid랑 setgid가 설정된 모든 커맨드 볼 수 있음
find / -perm /6000 -type f
- which 명령어로 passwd 파일 위치 찾고 권한 보기
- user의 실행 부분이 setuid 비트로 설정되어 있음.

- passwd 명령어 실행 후 프로세스 보기 (
ps -ef | grep passwd)- passwd의 owner인 root가 실행했다는 걸 볼 수 있음.


<실습>
아래와 같이 폴더를 만들어 777 권한을 준다. → 모든 사용자가 다른 사용자가 만든 폴더를 실수로 건들 수 있음.
drwxrwxrwx. 2 root root 6 Dec 14 18:00 allinone
이를 방지하기 위해 마지막 x 자리에 sticky bit를 설정해준다.
chmod +t /allinone

그러면 아래와 같이 777 권한인 폴더라도 다른 사용자 거라면 삭제가 안 된다.

(디렉토리 삭제: `rm -rf [디렉토리])
Directory Services
기업에서 사용자 계정을 관리하는 도구들
프로토콜
- LDAP : Lightweight Directory Access Protocol
- 네트워크 상에서 조직, 개체, 사용자 정보 등을 찾고 수정하기 위한 통신 프로토콜
서버 소프트웨어 (LDAP를 사용함)
- Active Directory
- Microsoft에서 만든, 사실상 표준이나 다름없음.
- OpenLDAP
- 오픈소스라 무료. 리눅스/유닉스 환경에서 가장 많이 쓰임
- AD처럼 화려한 기능은 부족, 가볍고 표준을 엄격하게 지킴
- IBM Directory Server
- IBM에서 만든 기업용 유료 LDAP 서버
- JumpCloud
- 클라우드형 AD.
- 서버를 실제로 구축할 필요 없음, 윈도우, 맥, 리눅스, 구글 워크스페이스 등을 한 번에 묶어줌.
연결 도구
- WinBIND = Used in Linux to communicate with Windows(Samba)
- 윈도우 유저가 리눅스에 로그인하고 싶을 때 사용
- 예를 들어 회사는 AD로 계정 관리하는데 개발팀은 리눅스 서버를 쓸 때. 로그인 시 리눅스가 윈도우 AD에게 인증을 요청함.
- 핵심: 리눅스 서버를 윈도우 AD 도메인에 가입시켜서 윈도우 아이디로 리눅스에 로그인하게 해줌
관리 시스템
- IDM(Identity Management)
- LDAP나 AD는 정보를 저장하는 곳이라면 IDM은 계정 수명 주기를 관리하는 통합 솔루션
- 기능: 버튼 하나만 눌러도 AD 계정 생성 + 이메일 생성 + 사원증 발급 권한까지 자동으로 함.
105. System Utility Commands
date: 현재 시스템 날짜, 시간 알려줌uptime: 시스템 시간, running 시간, 유저 수, cpu 로드 평균 알려줌hostname: 장비 이름 알려줌uname: OS 알려줌 (-a 붙이면 더 자세한 정보)which: 특정 커맨드 파일 위치를 알려줌cal: cal만 입력하면 해당 달력 나오고 그 뒤에 년도나 월, 일 지정 가능bc: 간단한 계산기. quit 입력하면 나감

106 ~ Processes and Jobs
Systemctl
서비스 이름 말고 PID로도 사용 가능
systemctlorservice: 버전 7 이상은 systemctl로 대체, 그 전은 servicesystemctl start|stop|status servicename.servicesystemctl enable|disable servicename.service: 부팅할 때 같이 활성화 or 비활성화systemctl restart|reload servicename.servciesystemctl list-units --all: 모든 서비스 정보
활성화/실행 중인 프로세스일 경우
활성화/실행 중이지 않은 프로세스 config 파일이 enabled 이지만 inactive 상태
비활성화 중인 프로세스 config 파일이 disabled 상태
systemctl list-units 을 치면 아래와 같이 실행 중인 서비스의 UNIT, LOAD, ACTIVE, SUB, DESCRIPTION이 나옴 (--all을 붙이면 전체 서비스)

만약 third party 등 새로운 애플리케이션을 깔아서 systemctl로 관리하고 싶으면 /etc/systemd/system/servicename.service에 새 unit file을 만들어야 함.
systemctl poweroff|halt|reboot: 시스템 전원 끄기/중지/재시작
ps 커맨드
ps: 현재 shell의 프로세스들을 보여줌.

ps -e: 현재 실행 중인 모든 프로세스들

ps aux: 실행 중인 모든 프로세스들을 BSD 포맷으로 보여줌

ps -ef: (제일 많이 사용) full format으로 모든 실행 중인 프로세스 보여줌

ps -u username: username이 실행 중인 모든 프로세스

top 커맨드
top
: 리눅스 프로세스와 실시간 view를 보여줌(PID, USER, PR 등… 3초마다 실시간으로 변함)
: 시스템 정보 요약과 리눅스 커널에서 현재 관리되고 있는 프로세스 or thread 리스트 보여줌
: top 커맨드를 사용하면 상호작용 모드로 들어가며 q로 나올 수 있음
: root가 아니어도 됨

top -u username: username이 사용하는 프로세스 보여줌top+ c: command의 경로 보여줌
top+ m : 메모리 사용량을 보여주고 정렬

top+ k : PID를 입력해서 프로세스 끌 수 있음.
kill 커맨드
kill: 프로세스를 수동으로 종료하는 명령어. systemctl 명령어로도 안 될 때 사용
kill [option] [PID]
option: signal name 또는 signal number/ID
kill -l: 전체 signal name 리스트를 볼 수 있음.
kill PID: default signal로 프로세스 종료
kill -1: 재시작
kill -2: ctrl+C와 같은 역할
kill -9: Forcefully kill the process
kill -15: Kill a process gracefully
비슷한 명령어
killall: 관련된 프로세스들까지 함께 다 종료
pkill: 프로세스 이름으로 종료 가능
Signal 옵션에 대한 강의 있는데 그냥 듣기만 함. 중요해 보이는데 나중에 알아보기
-
Standard signal SIGINT, SIGTERM, SIGKILL, SIGSTOP, SIGCONT
-
Real-time signal SIGRTMIN
crontab 커맨드
crontab: 작업 스케쥴하는 커맨드
crontab -e: crontab 편집
crontab -l: List the crontab entries
crontab -r: crontab 삭제
crond: crontab deamon/service that manages scheduling
systemctl status crond: crond service 들 관리
crontab의 각 column은 시간을 나타냄.
분, 시간, 일(131), 달(112), 주중 며칠인지(0~6 = 일요일부터 토요일)

근데 나는 왜 파일이 안 생기지?
24시간 기준으로 써야 됨


at 커맨드
at : 딱 하나만 스케줄할 수 있는 명령어. ctrl+d 로 나올 수 있음.
at HH:MM PM: 스케줄하기
atq: list 보기
atrm # 엔트리 삭제
atd: 스케줄링을 담당하는 at daemon/service
systemctl status atd: atd service 상태 보기
- 스케쥴하기

그 외 스케쥴링 방법
at 2:45 AM 101621: 10월 16일, 2021년 스케쥴
at 4PM + 4 days : 지금부터 4일 후 오후 4시
at now +5 hours: 지금부터 5시간 후
at 8:00 AM Sun: 첫 번째 일요일 오전 8시
at 10:00 AM next month : 다음 달 오전 10시
114. Additional Cron Jobs
디폴트로 4개의 종류가 있음.
- hourly
- daily
- weekly
- monthly
위의 모든 cron 파일들은 여기에 저장됨:
/etc/cron._(directory)


각 디렉토리에 들어가서 ls -l 하면 지정되어 있는 cron을 볼 수 있음. 만약 추가하고 싶다면 맞는 디렉토리에 스크립트를 추가하면 됨.
- 스케쥴링 되어 있는 작업들의 타이밍을 보고 싶다면:
/etc/anacrontab(hourly는 제외)

- houlry로 지정된 cron들은 다음 파일에서 볼 수 있음:
/etc/cron.d/0hourly
115. Process Management
bg: background에서 실행중인 프로세스 보여줌
jobs: 실행 중인 프로세스 목록 (ps -ef | grep과 비슷한 결과)
nohup process &: 프로세스를 터미널에 종속되지 않게 실행
nohup process # > /dev/null 2>&1 &: 결과에 나오는 로그 안 보게
이거 한 후 fg 실행하면 foreground에 실행 중인 프로세스를 볼 수 있음.
nice -n 5 sleep 10 : sleep 10 명령어를 우선순위 5를 주어서 실행. -20~19까지. 낮을수록 높음
116. System Monitoring
df: disk partition 정보를 보여준다.
-h: 읽기 쉬운 단어로 보여줌

dmesg: warning, error message 등 부팅 이후의 하드웨어 관련 이슈 로그들 볼 수 있음.

iostat: disk 관련 사용량 보여줌.
iostat 1: 1초마다 갱신해서 보여줌

ip route: 라우팅 관련 정보 (게이트웨이, IP 등)
ip route | column -t: 좀 더 읽기 쉽게 보여줌
ss | more: socket statistics. 시스템의 네트워크 소켓 상태와 통계 확인 가능

free : swap space, free 등 물리적 메모리 사용 현황 알려줌

cat /proc/cpuinfo: 시스템 Cpu 리소스 정보를 저장하는 파일
cat /proc/meminfo: 메모리 정보 저장하는 파일.
- /proc: 시스템 리소스 정보를 저장하는 폴더

117. Log Monitoring
/var/log: 리눅스의 로그들이 저장되는 기본 폴더.
ll: 해당 디렉토리의 모든 파일들을 알파벳 순으로 정렬해 보여줌
로그 폴더에 있는 대표적인 것들
boot.log: 시스템 부팅 과정의 이슈 로그. 재부팅하면 덮어씌워짐
chrony/: cron 로그들을 볼 수 있음.
maillog: email 관련된 활동 로그
secure: 로그인, 로그아웃 활동과 관련된 로그. 잘못된 비밀번호 입력 등도 여기 있음.
messages: 하드웨어, 소프트웨어, 앱 등 모든 로그가 들어있음.
119. System Maintenance Commands
shutdown
init 0-6: systemd service. 0부터 6까지의 옵션이 있음.
reboot: 재부팅
halt : 프로세스 실행 여부와 상관없이 시스템 종료 (= shutdown -h)
120. Changing System Hostname
hostnamectl - set-hostname newhostname: hostname을 newhostname으로 바꾸기

121. Finding System Information
cat /etc/redhat-release: 운영체제 이름
uname -a

dmidecode: 하드웨어, 메모리 등 많은 정보 알려줌
122. System Architecture
32비트와 64비트 CPU의 차이: 초당 계산할 수 있는 수 32비트에서 64비트 프로그램 불가, 반대는 가능
arch: cpu 칩셋 알려줌

123. SOS Report
sosreport: 진단 보고서 작성? 같은 거. 모아서 var/tmp 디렉토리에 tar 파일로 저장함.
124. Terminal Control Keys
ctrl + u : 커맨드 라인에 있는 모든 것들 지워줌
ctrl + c : stop or kill
ctrl + z: suspend
ctrl + d: interacvie program으로부터 나오기
125. Terminal Commands
clear: clears your screen
exit: exit out of the shell, terminal or a user session
script: stores terminal activities in a log file that can be named by a user, when a name is not provided by a user, the default file name, typescript is used.
script 명령어를 이름과 함께 실행하면 해당 이름을 가진 파일이 디렉토리에 생기고, 그 시점부터 모든 shell 내용이 파일에 저장됨. exit 하면 저장 끝낼 수 있음.
ex) script activity.log
126. Recover Root Password
-
시스템 재시작 ()
-
grub 파일 편집
-
패스워드 변경
-
재시작


여기서 컨트롤 x로 빠져나오면 싱글유저모드로 들어간다. 거기서 아래와 같이 명령어를 통해 비밀번호를 바꿔준다.

exit 하고 reboot 하면 됨.
127. Environment Variables
환경 변수란 프로세스의 실행에 영향을 주는 dynamic-named 한 값.
printenv or env: 모든 환경 변수 보기

echo $shell: shell 자리에 환경 변수 이름 넣어서 특정 환경 변수 볼 수 있음.
-
환경 변수 편집 (일시적. 로그아웃하면 사라짐)
export TEST=1echo $TEST -
환경변수 편집 (고정적)
cp .bashrc bashrc.orig> 오리지널 백업vi .bhasrcTEST='123'export TEST
vi /etc/profile or /etc/bashrc
Test='123'
export TEST
128. The Screen Command
screen: 리눅스에서 세션을 생성하고 이를 관리하는 명령어. 연결이 끈겨도 백그라운드에서 작업이 계속 진행됨.
screen 으로 시작 → screen : 0에서부터 열림
명령어 나중에 따로 알아보기
129. tmux Command
screen명령어에 비해 modern 하고 dynamic한 명령어.- 더 좋은 기능과 유연성을 가짐.
- tmux 있는지 확인하고 다운받기

- tmux 실행
[0]: 현재 세션 넘버- 0:bash : Window 0를 뜻함.
*: 현재 활성화된 윈도우

세로로 나누기: ctrl + b →shift + %
(화면 스위칭은 컨b 누르고 방향키)

가로로 나누기: ctrl + b → shift + "

아랫줄에 특정 윈도우에서 실행하고 있는 커맨드가 나옴.

tmux에서 나오기(백그라운드에 세션 남아 있음) : ctrl + b → d
현재 실행중인 윈도우 확인 : tmux ls

다시 tmux로 돌아가기 : tmux a
원하는 이름으로 세션 시작하기: tmux new -s [name]
창 나누지 않고 새로운 윈도우 생성: ctrl + b → c
다른 윈도우로 스위칭: ctrl + b + n
윈도우 닫기: ctrl + d → 세션을 닫는 게 아니라 창 하나 닫는 거
특정 넘버의 세션으로 돌아가기: tmux attach-session -t [#]
윈도우 이름 재설정: ctrl + b + ,
tmux 세션 종료: tmux kill-session -t [#]


