-
[Linux 입문] 필수 개념과 명령어 (1)맨땅에코딩/Linux 2020. 6. 19. 15:53
마운트(Mount)?
: 하드디스크의 파티션, CD/DVD, USB 메모리 등 사용하려면 특정한 위치에 연결을 해 줘야 한다.
이렇게 물리적인 장치를 특정한 위치(대개는 디렉토리)에 연결시켜 주는 과정
mount [물리장치] [연결할 디렉토리위치]
df -h : 현재 마운트된 저장 장치 목록 확인
[기본명령어]
ls 도스의 "dir" 과 같은 역할로 해당 디렉토리에 있는 파일 목록을 나열한다.
[사용 예]
ls : 현재 디렉토리의 파일 목록
ls /usr/bin : /usr/bin/ 디렉토리의 목록
ls -a : 현재 디렉토리의 목록 (숨김 파일 포함)
ls -l : 현재 디렉토리의 목록을 자세히 보여줌
ls *.txt : 확장자가 txt인 목록을 보여줌
ls -l /usr/bin/a* : /usr/bin/ 디렉토리에 있는 목록 중 앞 글자가 'a' 인것의 목록을 자세히 보여줌
cd 디렉토리를 이동한다.
[사용 예]
cd : 현재 사용자의 홈 디렉토리로 이동함
cd ~root : root 사용자의 홈 디렉토리로 이동함
cd .. : 바로 상위 디렉토리로 이동 ".." 은 현 디렉토리의 부모 디렉토리를 의미함
cd /usr/bin : '/usr/bin' 디렉토리로 이동함 (절대경로)
cd ../usr/bin : 상대경로로 이동함
pwd 현재 디렉토리의 전체 경로를 출력한다.
rm 파일이나 디렉토리를 삭제한다. 해당 파일이나 디렉토리에 삭제 권한이 있어야 한다.
[사용 예]
rm abc.txt : 그냥 삭제(내부적으로 'rm -i'로 연결함)
rm -i abc.txt : 삭제 시 확인여부 물어봄
rm -r abc : 디렉토리 삭제
rm -rf abc : abc 디렉토리와 그 하부를 강제로 전부 삭제
cp 파일이나 디렉토리를 복사한다. 새로 복사한 파일은 사용자의 소유가 된다.
[사용 예]
cp abc.txt cba.txt : abc.txt 파일을 cba.txt 파일로 복사
cp -r abc cba : 디렉토리 복사
touch 크기가 0인 새 파일을 생성하거나 이미 존재하는 파일인 경우 수정 시간을 변경한다.
[사용 예]
touch abc.txt : 파일이 없을 경우엔 abc.txt라는 빈 파일을 생성하고 abc.txt가 있을 경우에는 파일의
수정 시간을 현재 시각으로 변경함
mv 파일과 디렉토리의 이름을 변경하거나 위치 이동 시 사용한다.
[사용 예]
mv aaa bbb ccc ddd : aaa,bbb,ccc 파일을 ddd 디렉토리로 이동
mv abc.txt www.txt : 이름 변경
mkdir 새로운 디렉토리를 생성한다. 생성한 디렉토리는 명령어를 수행한 사용자의 소유가 된다.
[사용 예]
mkdir abc : 현재 디렉토리 아래에 abc라는 디렉토리 생성
mkdir -p def/fgh : 현재 디렉토리 아래에 def 디렉토리 생성하고, 그 안에 fgh 디렉토리 생성
rmdir 디렉토리를 삭제한다. 헤당 디렉토리의 삭제 권한이 있어야 하며, 파일이 들어 있으면 안된다.
파일이 들어 있는 디렉토리를 삭제하려면 "rm -r"을 사용해야 한다.
[사용 예]
rmdir abc
cat 텍스트로 작성된 파일을 화면에 출력한다. 파일의 내용을 간단히 확인하기 위해서 주로 사용한다.
[사용 예]
cat install.log
head 텍스트로 작성된 파일의 앞 10행 또는 마지막 10행만 출력한다.
,tail [사용 예]
head install.log
tail intall.log
more 텍스트로 작성된 파일을 화면에 페이지 단위로 출력한다. [space]는 다음 페이지, [b]는 앞페이지,
[Q]는 종료이다.
[사용 예]
more install.log
more +100 install.log : 100행부터 출력해줌
less more와 용도가 비슷하지만 기능이 더 확장된 명령이다. more의 키 및 화살표, [Page Up], [Page Down]도
작동한다.(vi의 기능이 일부 추가되었다고 생각하면 됨)
[사용 예]
less install.log
less +100 install.log : 100행부터 출력해줌
file File이 어떤 종류의 파일인지를 표시해 준다.
[사용 예]
file install.log
file /bin/gzip
clear 명령창을 깨끗하게 지워준다.
[사용자와 그룹]
/etc/passwd : 사용자정보가 있는 파일
열의미 : 사용자 이름:암호:사용자 ID:사용자가 소속된 그룹ID:전체 이름 :홈 디렉토리:기본 셸
암호가 x : /etc/shadow 파일에 비밀번호가 지정되어있다.
/etc/group : 그룹파일
열의미 : 그룹명:비밀번호:그룹 id:그룹에 속한 사용자명
[관련 명령어]
useradd 새로운 사용자를 추가해준다. 이 명령을 실행하면 /etc/passwd, /etc/shadow 및 /etc/group에 새로운 행이 추
(또는 가된다.
adduser) [사용 예]
useradd newuser
useradd -u 555 newuser : newuser를 생성하면서, 사용자ID를 555로 지정
useradd -g mygroup newuser : newuser를 생성하면서, mygroup이라는 그룹으로 사용자를 포함시킴
useradd -d /newhome newuser : newuser를 생성하면서, 홈 디렉토리를 /newhome으로 지정함
useradd -s /bin/csh newuser : newuser를 생성하면서, 기본 셸을 /bin/csh로 지정
passwd 사용자의 비밀번호를 지정하거나,변경한다.
usermode 사용자의 속성을 변경한다. 옵션은 useradd와 동일하다.
[사용 예]
usermod -g root newuser : newuser의 그룹을 root 그룹으로 변경한다.
userdel 사용자를 삭제한다.
chage 사용자의 암호를 주기적으로 변경하도록 설정한다.
[사용 예]
chage -l newuser : newuser에 설정된 사항을 확인한다.
chage -m 2 newuser : newuser가 설정한 암호를 사용해야 하는 최소 일자 ( 즉, 변경 후 최소 2일은 사용!)
chage -M 30 newuser : newuser가 설정한 암호를 사용할 수 있는 최대 일자 (즉,변경 후 최대 30일까지 사용!)
change -E 2020/12/31 newuser : 설정한 암호가 만료되는 날짜
chage -W 10 newuser : newuser가 설정한 만료되기 전에 경고하는 기간 (미지정시 기본값 7일)
groups 현재 사용자가 속한 그룹을 보여준다.
groupadd 새로운 그룹을 생성한다.
groupmod 그룹의 속성을 변경한다.
[사용 예]
groupmod -n newgroup mygroup :newgroup의 이름을 mygroup으로 변경한다.
groupdel 그룹을 삭제한다.
groupdel newgroup : 단 해당 그룹을 주요 그룹으로 지정한 사용자가 없어야 한다.
gpasswd 그룹의 암호를 설정하거나, 그룹의 관리를 수행한다.
[사용 예]
gpasswd newgroup : newgroup의 암호를 지정한다.
gpasswd -A newuser newgroup : newuser를 newgroup의 관리자로 지정한다.
gpasswd -a user1 newgroup : user1을 newgroup의 사용자로 추가한다.
gpasswd -d user1 newgroup : user1을 newgroup의 사용자에서 제거한다.
[파일과 디렉토리의 소유와 허가권]
각각의 파일과 디렉토리마다 소유권 및 허가권의 속성이 있다. "ls -l" 명령을 실행하면 볼 수 있다.
(1) 파일 유형
- d : 디렉토리
- - : 일반적인 파일
- b : 블록디바이스
- c : 문자디바이스
- l : 링크
(2) 파일 허가권
파일 허가권은 3개씩(소유자/그룹/그 외 사용자) 끊어 읽는다 r(read),w(write),e(execute)
chmod : 파일 허가권을 변경하는 명령어로 root 사용자 혹은 해당 파일의 소유자만 가능하다.
[사용예] chmod 777 install.log
chmod u+x : 소유자에게 실행권한을허가하라 / chmod g-rw 그룹에게 읽기쓰기권한을 제거하라
(3) 파일 소유권
파일 소유권은 파일을 소유한 사용자와 그룹을 의미한다.
chown : 파일의 소유권을 바꾸는 명령어
[사용예]
chown newuser install.log : install.log 파일의 소유자를 newuser로 변경
chown newuser.newuser install.log : 파일의 그룹도 newuser 그룹으로 변경
chgrp newuser install.log : 그룹만 newuser 그룹으로 변경
(4) 링크(Link)
파일의 링크에는 하드 링크(Hard Link)와 심볼릭 링크(Symbolic Link or Soft Link) 두 가지가 있다.
ln [링크대상파일] [링크명] : 하드링크 >> 원본파일이 이동해도 읽기가능
ln -s [링크대상파일] [링크명] :소프트링크 >> 원본파일이 이동하면 읽기X
* 하드링크 파일 목록 확인
stat [링크명] | grep Inode : inode 정보 확인
find / -inum [Inode번호] : 파일 목록 확인
[리눅스 관리자를 위한 명령어]
패키지(프로그램)을 설치하기 위해 가장 많이 사용되는 것은 RPM과 YUM이다.
YUM이 RPM의 기능을 포함하기때문에 RPM의 개념을 익혀야 한다.
(1) RPM(Redhat Package Manager)
windows의 "setup.exe"와 비슷하게 프로그램을 설치한 후에 바로 실행할 수 있는 설치 파일을 제작
>> *.rpm이며 이를 패키지(package)라고 부른다.
(2) RPM 파일형식
패키지이름-버전-릴리즈번호.페도라버전.아키텍처.rpm
(3) 자주 쓰이는 rpm의 사용법
rpm -Uvh <패키지 파일(*.rpm)>
설치)
- U -> (대문자) 기존에 패키지가 설치되지 않았다면 "i"와 가티 일반적인 설치를 하고, 기존에 설치되어 있다면 업그레이드를 한다.
- v -> 설치과정의 확인
- h -> 설치진행과정을 "#" 마크로 화면에 출력
삭제)
rpm -e <패키지 이름>
이미 설치된 패키지 질의)
- rpm -qa <패키지 이름> -> 시스템에 패키지가 설치되었는지 확인
- rpm -qf <패키지 이름> -> 이미 설치된 파일이 어느 패키지에 포함된 것인지 확인
- rpm -ql <패키지 이름> -> 특정 패키지에 어떤 파일들이 포함되었는지 확인
- rpm -qi <패키지 이름> -> 설치된 패키지의 상세정보
아직 설치되지 않은 rpm 파일에 대한 질의)
rpm -qlp <패키지 파일(*.rpm)> -> 패키지 파일에 어떤 파일들이 포함되엇는지 확인
* rpm -qip <패키지 파일(*.rpm)> -> 설치할 패키지 파일의 상세정보
: 미리 확인할때 유용하게 사용
편리한 패키지 설치,YUM (Yellowdog Updater Modified)
RPM의 의존성 문제를 해결하기 위한 편리한 툴
(1) YUM 개념
"yum" 명령은 "rpm" 명령의 패키지 의존성 문제를 완전하게 해결해 준다.
즉, 특정 패키지를 설치하고자 할때 의존성이 있는 다른 패키지를 자동으로 먼저 설치해주는 툴..!
저장소의 URL : "/etc/yum.repos.d/"
(2) YUM 기본적인 사용법
기본설치: yum install <패키지 이름>
yum -y install <패키지 이름> : 무조건 yes를 입력한것으로 간주하고 자동으로 넘어감
RPM파일설치 : yum install <*.rpm 파일 이름>
- 업데이트 가능한 목록 보기 : yum check-update
시스템에 설치된 패키지 중에서 업데이트가 가능한 패키지의 목록을 출력해 준다.
업데이트 : yum update <패키지 이름>
별로 쓰일일이 없다.install 명령어 입력 시 처리해주기때문
- 삭제 : yum remove <패키지 이름>
- 정보확인:yum info <패키지 이름>
(3) YUM 고급 사용법
로컬에서 설치 : yum localinsatll <*.rpm 파일>
네트워크 없이 현재 디렉토리에 있는 *.rpm 파일을 설치할 때 사용
- 패키지 그룹 설치 :yum groupinstall <패키지 그룹 이름>
패키지 그룹에 포함되는 패키지들을 통째로 설치할 때 사용할 수 있다.
패키지 그룹의 종류는 "yum grouplist" 명령으로 확인이 가능하다.
또한 패키지 그룹의 이름은 주로 띄어쓰기가 많으므로 꼭 "" 안에 써줘야 한다.
- 패키지 리스트 확인 : yum list <패키지 이름>
yum list all / yum list mysql* / yum list available
특정 파일이 속한 패키지 이름 확인 : yum provides <파일 이름>
GPG 키 검사 생략 : yum install --nogpgcheck <*.rpm 파일>
(4) YUM 설정 파일
/etc/yum.conf , /etc/yum.repos.d /
: yum 명령어와 관련된 설정 파일 (이 파일의 상세한 사항은 man.yum.conf 명령으로 확인할 수 있다.)
[파일의 압축과 묶기]
(1) 파일 압축
bz2, gz : bz2 > gz 압축률이 더 좋음
- bzip2 파일명 -> 파일명을 압축파일인 파일명.bz2로 만들어줌
- bzip2 -d "파일명.bz2" -> "파일명.bz2" 압축파일을 일반파일인 "파일명" 으로 만들어줌
- bunzip -> 확장명 bz2의 압축을 풀어준다. = bzip2 -d 와 동일
- gzip 파일명 -> 파일명을 압축파일인 파일명.gz로 만들어줌
- gzip -d "파일명.gz" -> "파일명.gz" 압축파일을 일반파일인 "파일명"으로 만들어줌
- gunzip 확장명 gz의 압축을 풀어준다. = gzip -d 와 동일
(2) 파일 묶기
tar 확장명 tar로 묶음 파일을 만들어 주거나 묶음을 풀어 준다
동작)
c -> 새로운 묶음
x -> 묶인 파일을 풀어줌
t -> 묶음을 풀기 전에 묶인 경로를 보여줌
옵션)
f (필수) - 묶음 파일명 지정 -> 원래 tar는 tape 장치 백업이 기본임(생략시 tape로)
v - visual -> 파일이 묶이거나 풀리는 과정을 보여줌
z - tar+gzip
j - tar+bzip2
[사용예]
- tar cvf xinetd.tar /etc/xinetd.d/ -> 묶기
- tar cvfz xinetd.tar.gz /etc/xinetd.d/ -> 묶기 + gzip 압축
- tar cvfj xinetd.tar.bz2 /etc/xinetd.d/ -> 묶기 + bzip2 압축
- tar tvf xinetd.tar -> 파일 확인
- tar xvf xinetd.tar -> tar 풀기
- *tar xvfz xinetd.tar.gz -> gzip 압축 해제 + tar 풀기
- *tar xvfj xinetd.tar.bz2 -> bzip2 압축 해제 + tar 풀기
[파일 위치 검색]
find
[경로]
[옵션] -name, -user(소유자), -newer(전,후), -perm(허가권), -size(크기)
[조건]
[action] -print(디폴트), -exec(외부명령 실행)
[사용예]
- find /etc -name "*.conf" -> /etc 디렉토리 하위에 확장명이 "*.conf"인 파일 검색
- find /home -user fedora -> /home 디렉토리 하위에 소유자가 fedora인 파일 검색
- find ~ -perm 644 -> 현재 사용자의 홈디렉토리 하위에 허가권이 644인 파일 검색
- find /bin -size +10k -size -100k -> /bin 디렉토리 하위에 파일 크기가 10KB~100KB인 파일 검색
- find ~ -size 0k -exec ls -l { } \; -> 현재 사용자의 홈 디레고리 하위에 파일 크기가 0인 파일의 목록을 상세히 출력
- find /home -name "*.swp" -exec rm { } \; -> /home 디렉토리 하위에 확장명이 "*.swp"인 파일을 삭제
-exec \n : 외부 명령어의 시작과 끝을 표시함
which <실행파일명> PATH에 설정된 디렉토리만 검색
whereis <실행파일명> 실행 파일 및 소스, man페이지 파일까지 검색
locate <파일명> 파일 목록 데이터 베이스에서 검색하기 때문에 매우 빠르고 유용하지만 updatedb 명령을 1회 수행해 줘야
사용할 수 있음
또한 updatedb 명령 이후에 설치된 실행 파일은 찾을 수 없음
[CRON과 AT]
(1) cron
주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정해 놓는 것을 cron이라고 부른다.
관련된 데몬(서비스)은 "crond"이며, 관련 파일로는 "/etc/crontab"이 있다.
(2) at
at은 일회성 작업을 예약하는 것이다. 즉, at는 예약을 해놓으면 한 번만 실행되고 소멸되는 것이다.
at <시간> 3:00am tomorrow / 11:00pm January 30 / now + 1 hours
완료되면 [Ctrl+D]
at -l -> 확인
atrm <작업번호> -> 취소
'맨땅에코딩 > Linux' 카테고리의 다른 글
[Linux 입문] 필수 개념과 명령어 (2) (0) 2020.06.19 [Linux 입문] 네트워크 관련 설정 명령어 (0) 2020.06.19