마인드 맵 갤러리 Linux 운영 및 유지 관리
Linux 명령줄 소개, 파일 및 디렉터리 작업 명령, 파일 필터링, 콘텐츠 편집 및 처리 명령 등을 포함하여 늙은 소년에게서 Linux 운영 및 유지 관리를 배우는 것에 대한 마인드 맵입니다.
2024-01-16 11:24:10에 편집됨이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
이것은 (III) 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제에 대한 마인드 맵이며, 주요 함량은 다음을 포함한다 : 저산소증-유도 인자 프롤릴 하이드 록 실라 제 억제제 (HIF-PHI)는 신장 빈혈의 치료를위한 새로운 소형 분자 경구 약물이다. 1. HIF-PHI 복용량 선택 및 조정. Rosalasstat의 초기 용량, 2. HIF-PHI 사용 중 모니터링, 3. 부작용 및 예방 조치.
이것은 Kuka Industrial Robots의 개발 및 Kuka Industrial Robot의 모션 제어 지침에 대한 마인드 맵입니다. 주요 내용에는 쿠카 산업 로봇의 역사, 쿠카 산업 로봇의 특성, 쿠카 산업 로봇의 응용 분야, 2. 포장 프로세스에서 쿠카 로봇은 빠르고 일관된 포장 작업을 달성하고 포장 효율성을 높이며 인건비를 줄입니다. 2. 인건비 감소 : 자동화는 운영자에 대한 의존성을 줄입니다. 3. 조립 품질 향상 : 정확한 제어는 인간 오류를 줄입니다.
408 컴퓨터 네트워크가 너무 어렵습니까? 두려워하지 마세요! 나는 피를 구토하고 지식 맥락을 명확히하는 데 도움이되는 매우 실용적인 마인드 맵을 분류했습니다. 컨텐츠는 매우 완전합니다. 네트워크 아키텍처에서 응용 프로그램 계층, TCP/IP 프로토콜, 서브넷 디비전 및 기타 핵심 포인트에 이르기까지 원칙을 철저히 이해하는 데 도움이 될 수 있습니다. 📈 명확한 논리 : Mindmas 보물, 당신은 드문 기회가 있습니다. 서둘러! 이 마인드 맵을 사용하여 408 컴퓨터 네트워크의 학습 경로에서 바람과 파도를 타고 성공적으로 해변을 얻으십시오! 도움이 필요한 친구들과 공유해야합니다!
늙은 소년에게서 Linux 운영 및 유지 관리를 배우십시오.
1장 Linux 명령줄 소개
Linux 명령줄 개요
Linux 명령줄 프롬프트 소개
# 기호는 슈퍼유저 루트로 로그인한 후 명령줄 끝에 나타나는 프롬프트이고, $ 기호는 일반 사용자로 로그인한 후 명령줄 끝에 나타나는 프롬프트입니다.
슈퍼유저는 시스템을 관리할 수 있는 모든 권한을 가집니다. 일반 사용자는 상대적으로 제한된 권한을 가지며 기본 시스템 정보 보기 등의 작업만 수행할 수 있으며 시스템 구성 및 관리 서비스를 변경할 수 없습니다.
명령줄 프롬프트 @ 앞의 문자는 현재 로그인한 사용자(whoami로 쿼리 가능)를 나타내고, @ 뒤의 문자는 호스트 이름(호스트 이름으로 쿼리 가능)을 나타내며 ~ 위치는 해당 사용자의 경로를 나타냅니다. 창의 현재 사용자.
Linux 명령 프롬프트는 PS1 환경 변수에 의해 제어됩니다. 설정 | grep PS1 PS1='[\u@\h\W]\$'
Linux 종료, 다시 시작, 로그아웃 명령
다시 시작 또는 종료 명령: 종료
종료 [옵션]... 시간 [메시지]
shutdown 명령과 다음 옵션 사이에는 최소한 하나의 공백이 있어야 합니다.
일반적으로 우리가 실행하는 종료 명령은 shutdown-h now 또는 shutdown-r now입니다.
종료 및 다시 시작 명령: 정지/전원 끄기/재부팅
재부팅 [옵션]... 정지 [옵션]... 전원 끄기 [옵션]...
2장 파일 및 디렉터리 작업 명령
pwd : 현재 위치를 표시합니다
비밀번호 [옵션]
CD: 디렉토리 변경
cd [옵션] [디렉토리]
cd 명령 사용 시 키보드의 "Tab" 키의 자동 완성 기능을 이용하면 입력 속도와 정확도를 향상시킬 수 있습니다. "Tab" 키의 자동 완성 기능은 다른 명령에도 적용됩니다.
예를 들어, 경로 개념을 이해하기 위해 상대 경로는 "/"(슬래시)로 시작하지 않고 현재 디렉터리 또는 지정된 디렉터리에서 시작하는 경로입니다. 예: data/, mnt/oldboy; 절대 경로는 /data/, /mnt/oldboy와 같이 루트에서 시작하는 "/" "(슬래시) 경로로 시작하는 경로입니다.
현재 사용자가 마지막으로 있던 디렉토리로 전환해야 할 경우 "cd-"(공백에 주의)를 사용하십시오. 현재 사용자의 홈 디렉토리로 전환해야 할 경우에는 "cd~"(공백에 주의하십시오)를 사용하십시오. );로 전환해야 하는 경우 현재 디렉터리의 상위 디렉터리로 경로를 지정할 때는 "cd.."(공백에 유의)를 사용하세요.
tree: 디렉터리의 내용을 트리 구조로 표시합니다.
트리 [옵션] [디렉토리]
mkdir: 디렉토리 생성
mkdir [옵션] [디렉토리]
mkdir 명령은 mkdir dir1 dir2… 형식으로 동시에 여러 디렉터리를 생성할 수 있습니다.
-p 매개변수를 사용하여 반복적으로 디렉터리 생성(mkdir -p oldboy/test)
-v 매개변수를 추가하여 디렉터리 생성 프로세스를 표시합니다. (mkdir -pv oldboy2/test)
디렉터리를 생성할 때 -m 매개변수를 사용하여 디렉터리에 대한 기본 권한을 설정할 수 있습니다. (mkdir -m 333 dir2)
동시에 여러 디렉터리와 여러 수준의 하위 디렉터리를 만듭니다. (mkdir -pv oldboy/{dir1_1,dir1_2}/{dir2_1,dir2_2} )
touch: 빈 파일을 생성하거나 파일의 타임스탬프 속성을 변경합니다.
touch 명령에는 두 가지 기능이 있습니다. 하나는 새로운 빈 파일을 생성하는 것이고, 다른 하나는 기존 파일의 타임스탬프 속성을 변경하는 것입니다.
[옵션] [파일]을 터치하세요.
파일 만들기(a.txt b.txt 터치)
파일의 타임스탬프 속성 변경
touch -a oldboy.txt #<==-a 매개변수는 마지막 액세스 시간을 변경합니다.
touch -m oldboy.txt #<==-m 매개변수는 마지막 수정 시간을 변경합니다.
파일 생성/수정을 위한 시간 속성 지정
touch -d 20201001 oldboy.txt #<==파일 생성 후 파일 수정 지정
touch -r a.txt oldboy.txt #<==oldboy.txt의 시간 속성을 a.txt와 일치시키려면 -r 매개변수를 사용하십시오.
touch -t 201512312234.50 oldboy.txt #<==파일을 201512312234.50 시간 형식으로 설정하려면 -t 옵션을 사용하세요.
ls: 디렉토리의 내용 및 관련 속성 정보를 표시합니다.
ls [옵션] [<파일 또는 디렉터리>]
모든 파일, 특히 숨겨진 파일을 표시하려면 -a 매개변수를 사용하십시오.
ls -a#<== 설명: -a 매개변수를 추가하면 "."(점)으로 시작하는 내용이 표시됩니다. 여기에 표시된 첫 번째 점은 테스트 디렉터리 자체인 현재 디렉터리를 나타내고 두 개의 점은 현재 디렉터리의 상위 디렉터리(여기서는 루트 디렉터리를 나타냄)를 나타냅니다. 1점과 2점에 대한 지식은 나중에 ln 명령에서 자세히 설명하겠습니다.
ls -A #<==숨겨진 파일을 포함하여 모든 파일을 나열하지만 "." 및 ".." 디렉터리는 제외합니다.
자세한 정보를 표시하려면 -l 매개변수를 사용하십시오.
ls -l #<==여기서 시간 속성 열은 기본적으로 파일의 마지막 수정 시간을 표시합니다. #<==설명: 이 -l 매개변수는 가장 일반적으로 사용되는 매개변수로, 파일 유형, 권한, 연결 수, 소유자(그룹), 디렉토리의 생성 및 수정 시간 정보를 긴 형식으로 나열한다는 의미입니다. 여기에서 각 열의 속성 의미를 숙지해야 하며, 이러한 속성 정보에 대해서는 나중에 자세히 설명합니다.
전체 시간 속성을 표시하는 매개변수 --time-style=long-iso.
ls -l --time-style=long-iso #<==long-iso 모드에서 시간을 표시합니다. 이 명령의 결과는 훌륭합니다.
--time-style의 선택적 매개변수 값은 full-iso, long-iso, iso, locale 등 다음과 같습니다. 기본값은 로케일입니다.
프로덕션 시나리오에서는 동일한 디렉터리에 있는 파일 및 디렉터리 시간이 일관되지 않게 표시되는 문제가 자주 발생하므로 너무 많다고 생각되면 ls-l--time-style=long-iso를 사용하여 조정해야 합니다. 매개변수가 기억하기 어려운 경우 별칭 관리를 설정할 수 있습니다.
ls-l과 같은 명령을 실행하면 기본적으로 파일의 마지막 수정 시간이 표시된다는 점을 언급할 만하다(새 파일인 경우 생성 시간).
ls--full-time은 전체 시간을 표시하는 데 사용되며 이는 ls-l--time-style=full-iso와 동일합니다.
콘텐츠의 액세스 시간 속성을 표시하는 매개변수와 함께 ls 명령을 실행합니다.
ls -l --time-style=long-iso --time=atime #<==액세스 시간을 표시하려면 --time= atime 매개변수를 추가하세요.
관련 명령에는 파일이 변경될 때 시간을 표시하는 데 사용되는 ls-l--time-style=long-iso--time=ctime이 포함됩니다.
파일 시간 컬럼과 mtime, atime, ctime에 대한 지식은 이전에 touch 명령어를 소개할 때 설명한 바 있습니다.
-F 매개변수와 함께 ls 명령을 실행합니다(이는 tree 명령의 -F와 매우 유사합니다).
ls -F#<==설명: -F를 추가하면 모든 디렉터리 끝에 슬래시 /가 추가되는 것을 확실히 볼 수 있습니다. 그러한 기능이 업무에 어떤 용도로 사용됩니까? 물론 유용합니다. 예를 들어 모든 디렉터리를 필터링하려면 슬래시가 있는 디렉터리만 필터링하면 됩니다.
디렉토리 자체에 대한 정보만 표시하려면 -d 매개변수를 사용하십시오.
ls -ld dir1 #<==원하는 것을 얻으려면 -d 매개변수를 추가하세요.
디렉토리를 반복적으로 보려면 -R 매개변수를 사용하십시오.
ls -R dir1 #<== 유사하지만 트리만큼 사용하기 쉽지는 않습니다.
ls 명령 별칭 및 ls 별칭 설정에 대한 지식.
alias lst='ls -l --time-style=long-iso' #<==명령 별칭을 구성합니다.
최근 업데이트된 파일을 찾아보세요.
ls -lrt /etc/ #<==-t는 시간을 기준으로 정렬되고, -r은 역순, 즉 시간을 기준으로 역순으로 정렬됩니다.
프로덕션 시나리오 데이터베이스를 백업하고 데이터베이스 이름 목록을 얻으십시오.
ls -F /usr/local/mysql/data|egrep "/"|awk -F "/" '{print $1}' >/root/dbfilename.list#<== 팁: 이 데이터베이스 테이블 백업 스크립트에서는 , ls -F와 egrep을 결합하여 데이터베이스 디렉터리 이름을 필터링합니다.
프로덕션 시나리오에서 가비지 점유 inode 노드를 삭제합니다.
ls|xargs rm -f #<==파일이 너무 많으면 rm -fr *로 직접 삭제할 수 없습니다.
ls-F 명령에 대한 확장된 지식
실행 가능한 일반 파일을 나타내려면 "*"를 추가하십시오.
디렉터리를 나타내려면 "/"를 추가하세요.
소켓을 나타내려면 "="를 추가하세요.
FIFO를 표시하려면 "|"를 추가하세요.
심볼릭 링크를 나타내려면 "@"을 추가하세요.
ls 명령 출력 내용의 속성 해석
ls -lhi #<== -l 매개변수에 대해서는 앞에서 자세히 설명했습니다. -h 매개변수의 기능은 파일 크기를 사람이 읽을 수 있는 방식으로 표시하는 것입니다. 아래 "4.0K". 크기, -i 매개변수는 파일의 inode 값을 표시하는 데 사용됩니다.
cp: 파일이나 디렉터리 복사
cp [옵션] [소스파일] [대상파일]
cp -a file1.txt file5.txt #<==file1.txt를 file5.txt로 복사하려면 -a 매개변수를 사용하세요. -a 매개변수를 사용하여 복사된 속성은 변경되지 않습니다.
-a 매개변수를 사용하여 복사하는 경우 파일의 시간 속성은 변경되지 않습니다. -a 매개변수의 기능에는 파일의 속성을 유지하는 -p 매개변수의 기능이 포함됩니다.
cp -i file1.txt file5.txt #<== 파일을 복사하려면 -i 매개변수를 사용하세요. 파일을 덮어쓸지 묻는 메시지가 표시됩니다.
CentOS 시스템은 기본적으로 cp 명령에 대한 별칭을 설정합니다. 즉, -i 매개변수가 추가됩니다. 그러나 쉘 스크립트에서 cp를 실행할 때 -i 매개변수가 없으면 덮어쓰기 여부를 묻지 않습니다. 이는 명령줄과 쉘 스크립트를 실행할 때의 환경 변수가 다르기 때문입니다.
cp -r dir1 dir2/ #<==-r 매개변수를 사용하는 경우 디렉터리를 재귀적으로 복사하고 해당 디렉터리 아래의 모든 하위 디렉터리와 폴더를 복사합니다.
cp /etc/ssh/sshd_config{,.ori}#<==이 방법의 원리는 bash의 중괄호 확장 작업입니다. /etc/ssh/sshd_config{,.ori}는 /etc/ssh/sshd_config / etc로 확장됩니다. /ssh/sshd_config.ori를 복사한 다음 cp 명령에 전달합니다.
mv: 파일 이동 또는 이름 바꾸기
mv [옵션] [소스 파일] [대상 파일]
mv file6.txt file7.txt #<==file7.txt가 없으면 file6.txt의 이름을 file7.txt로 바꿉니다.
mv file5.txt file7.txt #<==file7.txt가 존재하는 경우 file5.txt를 file7.txt로 덮어씁니다.
\mv file4.txt file7.txt #<==\를 사용하여 시스템 별칭을 보호하면 덮어쓸지 여부를 묻는 메시지가 표시되지 않습니다.
mv file7.txt dir1/ #<==dir1은 디렉터리이고 존재하며, file7.txt를 dir1로 이동합니다. dir1이 존재하지 않으면 dir1의 일반 파일로 이름을 바꿉니다.
mv -t dir1/ file1.txt file2.txt file3.txt file7.txt #<== 소스와 대상을 바꾸려면 -t 매개변수를 사용하고, -t 뒤에 디렉터리, 마지막으로 이동할 파일을 사용합니다.
rm: 파일이나 디렉터리를 삭제합니다.
rm [옵션] [<파일 또는 디렉터리>]
rm -f file3.txt #<==-f 매개변수는 프롬프트 없이 강제로 삭제됩니다.
rm -r dir1 #<==재귀적으로 삭제하려면 -r을 사용하세요. 하지만 강제로 삭제하려면 확인 메시지가 표시됩니다.
삭제에 대한 실무 경험
rm 대신 mv를 사용하십시오. 서둘러 삭제하지 말고 먼저 휴지통/tmp로 옮기십시오.
삭제하기 전에 반드시 백업하십시오. 문제가 있는 경우 언제든지 복원할 수 있습니다.
꼭 삭제해야 한다면 시스템 예약 작업을 통해 파일을 정리하는 등 rm 대신 find를 사용하세요.
rm 명령을 통해 삭제해야 하는 경우에는 디렉터리를 먼저 변경한 후 삭제하세요. 와일드카드 없이 삭제가 가능하다면 와일드카드를 사용하지 마세요. 파일을 삭제하기 위해 "rm-rf 파일 이름"을 사용하는 것은 금지되어 있습니다. 왜냐하면 "rm-rf"가 실수로 디렉토리를 삭제하면 프롬프트가 표시되지 않기 때문입니다. 이는 매우 위험합니다. 최대 "rm-f 파일명"을 사용하며, "rm 파일명"을 권장합니다.
rmdir: 빈 디렉토리 삭제
rmdir [옵션] [디렉토리]
rmdir 명령은 빈 디렉터리를 삭제하는 데 사용됩니다. 디렉터리가 비어 있지 않으면 명령이 작동하지 않습니다.
rmdir -p -v dir1/a/b/ #<== 재귀 삭제에는 여전히 모든 디렉터리 구조를 나열해야 합니다.
ln: 하드링크와 소프트링크
ln [옵션] [소스 파일 또는 디렉터리] [대상 파일 또는 디렉터리]
하드 링크
Linux 파일 시스템에서는 일반적이며 여러 파일 이름이 동일한 인덱스 노드(inode)를 가리키는 것이 허용됩니다. 이 경우 파일을 하드 링크라고 합니다.
동일한 inode 노드 번호를 가진 여러 파일은 서로에 대한 하드 링크 파일입니다.
하드링크 파일이나 소스 파일 중 하나를 삭제하지만 파일 엔터티는 삭제되지 않습니다.
파일 엔터티는 소스 파일과 소스 파일의 해당 하드 링크 파일이 모두 삭제된 경우에만 삭제됩니다.
하드링크 파일과 소스 파일을 모두 삭제하면 새로운 데이터가 저장될 때 이 파일의 공간이 차지하게 되거나, 디스크 fsck 검사 시 시스템에서 삭제된 데이터도 재활용하게 됩니다.
하드링크 파일은 파일의 또 다른 입구입니다(슈퍼마켓의 정문과 뒷문에 해당).
하드링크 파일을 파일로 설정하여 중요한 파일이 실수로 삭제되는 것을 방지할 수 있습니다.
"ln source file hard link file" 명령을 실행하면 하드링크 생성이 완료됩니다.
하드링크 파일은 rm 명령을 사용하여 삭제할 수 있습니다.
정적 파일(프로세스에서 호출하지 않는 파일)의 경우 해당 하드링크 개수가 0(i_link)이 되면 파일이 삭제됩니다. i_link의 조회 방식은 ls-lih이며, 조회 결과의 세 번째 열은 하드링크 개수입니다.
디렉터리, 하드 링크를 생성할 수 없습니다.
각 디렉토리 아래에는 하드 링크 "."가 있고, 상위 디렉토리에 해당하는 하드 링크 ".."가 있습니다.
상위 디렉터리에 하위 디렉터리를 만들고 상위 디렉터리의 링크 수를 1만큼 늘립니다. 하위 디렉터리에는 상위 디렉터리를 가리키는 ".."이 있습니다. 그러나 상위 디렉터리에 파일이 생성되면 상위 디렉터리의 링크 수가 증가하지 않습니다.
소프트 링크
소프트 링크는 Windows 바로 가기와 유사합니다. 후속 readlink 명령을 통해 해당 방향을 볼 수 있습니다.
소프트 링크는 소스 파일의 경로를 저장하고 소스 파일 엔터티를 가리키는 텍스트 파일과 유사합니다.
소스파일을 삭제하더라도 소프트링크 파일은 여전히 존재하지만, 가리키는 소스파일 경로의 내용에 접근할 수 없습니다.
실패하면 일반적으로 흰색 글자와 빨간색 배경으로 깜박입니다.
"ln-s 소스 파일 소프트 링크 파일" 명령을 실행하면 소프트 링크 생성이 완료됩니다. (소프트 링크 파일 이름은 미리 존재할 수 없습니다.)
소프트 링크와 소스 파일은 파일 유형, 파일이 다르며 inode 번호가 다릅니다.
소프트 링크 파일을 삭제하려면 rm 명령을 사용하십시오.
readlink: 심볼릭 링크 파일의 내용을 봅니다.
readlink [옵션] [파일]
readlink /usr/bin/awk #<==이 소프트 링크 파일의 실제 내용을 볼 수 있습니다.
readlink -f /usr/bin/awk #<==-f 매개변수를 사용하면 마지막 비기호 링크 파일이 표시됩니다.
find: 디렉토리에서 파일 찾기
find [옵션] [경로] [작업문]
find . -atime -2 #<== "."는 현재 디렉토리를 나타냅니다. 2일 이내에 액세스된 파일을 찾으려면 atime 옵션을 사용하십시오.
검색 시간 설명 찾기
-4는 파일이 지금부터 4일 이내에 변경되었음을 나타냅니다.
4는 파일이 4일 전에 변경되었음을 의미합니다.
4는 지금으로부터 4일을 의미합니다.
find /var/log/ -mtime 5 -name '*.log' #<==/var/log/ 디렉토리에서 5일 전 ".log"로 끝나는 파일을 찾습니다.
find ! -type d #<== "!"는 부정을 의미합니다. 디렉토리가 아닌 파일을 검색하려면 느낌표의 위치에 주의하세요.
find /data/ -perm 755 #<==파일 권한에 따라 파일 찾기, 755는 권한입니다.
find . -size 1000c #<==현재 디렉토리에서 파일 크기가 1000바이트보다 큰 파일을 찾습니다.
find /data -path "/data/dir3" -prune -o -print #<==매개변수 -path는 경로 스타일을 지정하고, -prune 매개변수는 지정된 디렉터리를 제외하는 데 사용됩니다.
find /data \( -path /data/dir2 -o -path /data/dir3 \) -prune -o -print 괄호를 사용하여 여러 표현식을 결합하지만 괄호는 명령줄 의미에서 특별한 의미를 가지므로 "\"는 여기에서 탈출하는 데 사용됩니다. 이는 bash에게 다음 문자 "()"를 구문 분석하지 않고 처리를 위해 find 명령에 맡기도록 지시합니다. 또한 "\(-path")에서는 왼쪽 대괄호와 경로 사이에 공백이 있고, "dir3\)"에서는 dir3과 오른쪽 대괄호 사이에 공백이 있습니다. 이는 문법적 요구 사항입니다.
find . -user none #<==사용자가 아무도 없는 파일을 찾습니다.
find . -nouser#<==어떤 사용자에게도 해당되지 않는 파일을 찾습니다.
find .-group none #<==이 함수는 이전 예제와 유사하며 여기서는 사용자 그룹이 사용자인 파일을 찾는 것을 나타냅니다.
find . -nogroup#<==어떤 사용자 그룹에도 해당하지 않는 파일을 찾습니다.
find . -newer file1.txt ! -newer file2.txt#<==변경 시간이 file1.txt보다 최신이지만 file2.txt보다 오래된 파일을 찾습니다.
find . -maxlength 1 -type d #<==-maxlength 1 은 tree -L 1과 유사한 첫 번째 수준 디렉터리를 찾습니다.
find . -maxlength 1 -type d ! -name "." #<==이름이 점인 줄을 부정하고 출력하지 않으려면 느낌표(!)를 사용하세요.
find . -maxlength 1 -type d ! -name "." -o -name "oldboy"#<==-o는 "."을 제외한 모든 디렉토리 또는 파일을 표시함을 의미합니다.
find . -maxlength 1 -type d ! -name "." -a -name "ext"#<==-a는 점이 아니고 이름이 ext인 디렉토리를 검색함을 의미합니다. ext라는 이름의 디렉토리
find .-type f -exec ls -l {} \;#<==find 명령은 현재 디렉토리의 모든 일반 파일을 일치시키고 -exec 옵션에서 ls -l 명령을 사용하여 나열합니다.
find . -type f -mtime 14 -exec rm {} \; #<==find 명령은 변경된 지 14일이 지난 디렉터리에서 파일을 찾아 -exec 옵션에 rm 명령을 사용하여 삭제합니다.
find /var/log/ -name "*.log" -mtime 5 -ok rm {} \;#<==find 명령은 ".log"로 끝나는 모든 파일 이름과 /var/log에서 변경 시간을 찾습니다. / 디렉터리의 5일이 지난 파일을 삭제합니다. 지금까지 -ok의 기능은 -exec와 동일하지만, -ok에는 삭제하기 전에 프롬프트를 표시하는 기능도 있습니다. 파일을 삭제하려면 y 키를 누르고 파일을 삭제하지 않으려면 n 키를 누르는 것이 더 안전합니다.
find .-type f|xargs ls -l #<== find 명령으로 찾은 일반 파일을 파이프 기호와 xargs 명령을 통해 실행하기 위한 ls 명령에 전달합니다. 명령 형식에 주의하십시오. 여기서는 파이프 기호 "|"가 사용됩니다. xargs는 이 부분을 읽기 전에 먼저 xargs 명령에 대한 장을 읽어볼 수 있습니다.
find . -name "*.txt"|xargs -i mv {} dir2/ #<=={}가 find로 찾은 파일을 나타내도록 xargs의 -i 매개변수를 사용하십시오. 이동할 소스 파일이 dir2 디렉터리로 이동됩니다. 자세한 방법은 섹션 2.13.3 "지식 확장: 발견된 파일을 지정된 위치로 이동하는 여러 방법"을 참조하세요.
find dir2 -name "file*"|xargs -p rm -f#<== 참고: xargs 명령의 -p 옵션을 사용하면 다음 명령을 실행할지 여부를 확인하라는 메시지가 표시됩니다.
xargs: 표준 입력을 명령줄 인수로 변환
xargs [옵션] xargs 명령은 명령줄 매개변수를 다른 명령에 전달하는 필터입니다. 파이프 또는 표준 입력을 통해 전달된 데이터를 xargs 명령 뒤에 오는 명령의 명령줄 매개변수로 변환할 수 있습니다.
xargs < test.txt#<==는 모든 숫자를 한 줄로 바꿉니다. xargs는 파일에 직접 연결할 수 없으며 입력 리디렉션 문자 "<"와 결합되어야 합니다.
xargs -n 3 < test.txt#<== 한 줄에 최대 3개까지 출력합니다.
echo SplitXsplitXsplitXsplitX|xargs -d X -n 2 #<==X를 구분 기호로 사용하고 한 줄에 최대 2개까지 출력합니다.
find . -name "*.log"|xargs -i mv {} dir1/ #<==xargs의 -i 옵션을 사용하면 {}가 이전 find 명령으로 찾은 파일 또는 디렉터리를 바꿀 수 있습니다.
find .-name "file*"|xargs -I [] cp [] dir2 -I 옵션은 {} 대신 []와 같은 다른 문자를 지정할 수 있습니다.
find . -type f -name "*.txt" -print0|xargs -0 rm -f #<==xargs는 구분 기호를 공백으로 잘못 인식하여 출력을 null 문자로 구분하고 -를 사용합니다. 0 옵션.
이름 바꾸기: 파일 이름을 바꿉니다.
에서 파일로 이름 바꾸기
rename "_finished" "" * #<==모든 파일의 _finished를 빈 파일로 바꿉니다.
rename .jpg .oldboy *.jpg #<==모든 파일의 .jpg를 .oldboy로 바꿉니다.
basename: 파일 이름이나 디렉터리 이름을 표시합니다.
기본 이름 [<파일 또는 디렉터리>] [접미사]
basename /data/dir1/file1.txt #<==경로 부분을 제거합니다. 즉, 파일 이름만 표시됩니다.
dirname: 파일 또는 디렉터리 경로를 표시합니다.
dirname [<파일 또는 디렉터리>
dirname /data/dir1/file1.txt #<==파일이 있는 경로만 표시합니다. /데이터/dir1
chattr: 파일의 확장 속성을 변경합니다.
chattr [옵션] [모드] [<파일 또는 디렉터리>]
chattr a test #<== a추가 속성을 추가합니다.
chattr i file1.txt #<==파일을 잠그려면 i 매개변수를 사용하세요.
lsattr: 파일 확장자 속성 보기
lsattr [옵션] [<파일 또는 디렉터리>]
lsattr file1.txt #<==파일의 기본 확장 속성을 봅니다.
lsattr -d dir2 #<==디렉토리의 확장된 속성을 보려면 -d 옵션을 사용하십시오.
파일: 파일 유형을 표시합니다.
file [옵션] [<파일 또는 디렉터리>]
file oldboy oldboy: 디렉토리 #<==oldboy는 디렉토리입니다.
md5sum: 파일의 MD5 값을 계산하고 확인합니다.
md5sum [옵션] [파일]
md5sum oldboy.txt #<==md5sum 명령은 파일을 직접 연결하여 파일의 MD5 값을 가져올 수 있습니다.
chown: 파일이나 디렉터리의 사용자 및 사용자 그룹을 변경합니다.
chown [옵션] [사용자:그룹] [<파일 또는 디렉터리>]
":"는 "."로 대체될 수 있습니다.
권한을 부여할 사용자 및 그룹 이름은 실제로 Linux 시스템에 존재해야 합니다.
chown oldboy file1.txt #<==oldboy 사용자를 인증합니다. oldboy 사용자를 미리 생성해야 합니다.
chown .oldboy file1.txt #<==oldboy 사용자 그룹을 승인합니다. 점을 놓치지 않도록 주의하세요. 여기의 점은 콜론으로 바뀔 수도 있습니다.
chown root:root file1.txt #<==":" 또는 "."을 사용할 수 있습니다.
chown -R oldboy.oldboy dir2/ #<==재귀적으로 인증하려면 -R 매개변수를 사용하세요.
chmod: 파일 또는 디렉터리 권한 변경
chmod 명령은 파일이나 디렉터리 권한을 변경하는 데 사용되는 명령이지만 파일 소유자와 슈퍼유저 루트만 이 명령을 실행할 수 있습니다.
chmod [옵션] [모드] [<파일 또는 디렉터리>]
chmod a= file1.txt #<==모든 (a) 권한을 비워두도록 설정합니다(등호 뒤에 문자 없음).
chmod u x file1.txt #<==사용자 파일의 소유자 실행 권한을 설정합니다.
chmod g w file1.txt #<==그룹 파일 사용자 그룹의 쓰기 가능 권한을 설정합니다.
chmod 또는 r file1.txt #<==다른 사용자가 읽을 수 있는 기타 권한을 설정합니다.
chmod ug r,o-r file1.txt #<==여러 권한 작업을 쉼표로 구분하여 함께 사용할 수 있습니다. ug r은 ur 및 gr r의 약어입니다.
chmod u=rwx,g=rx,o=x file1.txt #<== "=" 원래 권한을 모두 취소한 다음 주어진 권한을 부여합니다.
chmod 000 file1.txt #<==이전 예제 chmod a= file1.txt와 동일한 효과가 있습니다.
chmod 753 file1.txt #<==모든 사람은 숫자 권한과 문자 권한을 변환하는 데 능숙해야 합니다.
chmod -R 777 dir2/ #<==파일 디렉토리 777에 재귀적으로 권한을 부여합니다.
chgrp: 파일 사용자 그룹 변경
chgrp [옵션] [사용자 그룹] [<파일 또는 디렉터리>]
chgrp oldboy install.log #<==install.log 파일을 수정하는 사용자 그룹은 oldboy입니다.
chgrp -R root dir1/ #<==매개변수 -R 재귀 인증.
umask: 권한 마스크 표시 또는 설정
umask [옵션] [모드]
3장 파일 필터링 및 내용 편집 처리 명령
cat: 파일 병합 또는 파일 내용 보기
고양이 [옵션] [파일]
cat >test.txt<<EOF EOF #<== 종료하려면 Enter를 눌러야 합니다. 또한 EOF는 쌍으로 나타나야 하지만 다른 쌍의 태그로 대체할 수도 있습니다. 예를 들어 oldboy 문자 태그는 기본적으로 끝 EOF를 대문자로 작성해야 합니다.
cat -n test.txt#<==참고: 위의 예에서 볼 수 있듯이 -n 옵션은 줄에 따라 파일 내용에 번호를 매기고 빈 줄을 포함하여 출력을 인쇄하는 것입니다.
cat -b test.txt#<== 참고: 위의 예에서 볼 수 있듯이 -b 옵션은 -n 옵션과 유사하지만 -b 옵션은 빈 줄에 번호를 매기지 않습니다.
cat -E test.txt#<== 참고: 위의 예에서 볼 수 있듯이 -E 옵션은 파일 끝에 숨겨진 끝 식별자 $ 기호를 표시합니다. 빈 줄이더라도 끝에는 최종 식별자가 있으니 다들 주의하셔야 합니다.
cat -s test.txt#<==여기에는 원래 세 개의 빈 줄이 있었는데 이제 -s 옵션으로 인해 한 개의 빈 줄이 됩니다.
고양이 >test3.txt
Cat 및 ">" 리디렉션은 표준 출력을 파일로 전달하는데, 이는 파일을 편집하는 특별한 방법입니다.
편집을 종료하려면 단축키 Ctrl d 또는 Ctrl c를 사용하여 종료할 수 있지만 먼저 Enter를 실행하고 입력되지 않은 새로운 줄에 커서를 위치시켜야 합니다.
이렇게 입력을 하게 되면, 실수를 해서 백스페이스 키만 누르면 삭제가 되지 않는 것을 알 수 있는데, 삭제하려면 "Ctrl 백스페이스 키"를 누르고 있어야 합니다.
이 작업은 확장된 지식 포인트로 언급되는 특별한 편집 방법으로 실제 제작 환경에서는 거의 사용되지 않습니다.
cat web01_access_20130522.log web02_access_20130522.log > web_access_20130522.log cat을 사용하면 여러 파일을 연결하여 웹 클러스터 로그를 병합할 수 있습니다.
tac: 파일 내용을 거꾸로 표시
tac [옵션] [파일]
더보기: 페이지에 파일 내용 표시
더보기 [옵션] [파일]
more /etc/services #<==어떤 매개변수도 허용하지 않으며 파일 내용을 전체 화면에 표시합니다.
more -5 /etc/services #<==이때 파일 내용은 전체 화면에 표시되지 않고 5줄의 내용만 표시됩니다.
more 888 /etc/services #<==이때 파일 내용은 888행에서 바로 표시됩니다.
ls /etc/|more -10 #<==모든 사람은 /etc 아래에 많은 파일 디렉토리가 있다는 것을 알아야 합니다. 직접 ls 보기는 너무 많은 내용을 표시하므로 more 명령을 사용하여 페이지에 표시할 수 있습니다.
less: 파일 내용을 페이지에 표시
less [옵션] [파일]
less /etc/services #<==어떤 매개변수도 허용하지 않고 파일 내용을 전체 화면에 표시합니다.
less -N /etc/services #<==각 줄 앞에 줄 번호가 있습니다.
ls /etc/|less #<==etc 디렉토리 파일의 내용을 페이지 단위로 봅니다.
head: 파일 내용 헤더를 표시합니다.
헤드 [옵션] [파일]
head /etc/passwd #<==head 명령이 매개변수를 수신하지 않으면 기본적으로 파일의 처음 10줄이 표시됩니다.
head -n 5 /etc/passwd #<==첫 번째 형식은 표시할 처음 5줄을 지정합니다.
head -5 /etc/passwd #<==두 번째 형식도 표시할 처음 5줄을 지정하지만 이 쓰기 방식이 더 간소화됩니다.
head -c 10 /etc/passwd #<==파일의 처음 10바이트를 읽습니다. 이전 쓰기 방법은 행 단위인 반면, -c는 바이트 단위입니다. 이 기능은 일반적으로 사용되지 않습니다.
head -n -21 /etc/passwd #<==여기 숫자는 음수 값으로, 이 쓰기 방식은 일반적으로 사용되지 않습니다.
tail: 파일 내용의 꼬리를 표시합니다.
꼬리 [옵션] [파일]
tail /etc/passwd #<==tail 명령은 매개변수를 사용하지 않으며 기본적으로 마지막 10줄을 표시합니다.
tail -n 5 /etc/passwd #<==텍스트의 마지막 5줄 표시
tail -5 /etc/passwd #<==텍스트의 마지막 5줄을 작성하는 두 번째 방법이 표시됩니다. 이 방법이 더 간단합니다.
tail -n 15 /etc/passwd #<==15번째 줄부터 파일을 표시합니다. 확장된 사용법이지만 일반적으로 사용되지는 않습니다.
tail -f /application/nginx/logs/access.log #<==tail -f는 파일 변경 사항을 실시간으로 모니터링합니다. 프로덕션에서 일반적인 시나리오는 로그 파일을 모니터링하는 것입니다.
tail -f oldboy #<==-f 매개변수를 사용하십시오. 파일이 존재하지 않으면 오류가 보고되고 명령이 종료됩니다.
tail -F oldboy #<==-F 매개변수를 사용하십시오. 파일이 존재하지 않으면 오류가 반환되지만 파일이 생성될 때까지 기다리며 명령을 종료하지 않습니다.
tailf: 추적 로그 파일
tailf [옵션] [파일]
tailf 명령은 tail-f와 거의 동일합니다. tail-f와의 차이점은 파일이 커지지 않으면 디스크 파일에 액세스하지 않으며 파일의 액세스 시간을 변경하지 않는다는 것입니다.
tailf /application/nginx/logs/access.log #<== 변경되는 로그 파일을 쉽게 확인할 수 있습니다.
cut: 텍스트에서 텍스트 일부를 추출하여 출력합니다.
잘라내기 [옵션] [파일]
cut -b 3 oldboy.txt #<==3번째 바이트만 출력합니다.
cut -b 3-5,10 oldboy.txt #<==-b 3-5 형식의 쓰기를 지원하며 여러 위치는 쉼표로 구분됩니다.
cut -b -3 oldboy.txt #<==-3은 첫 번째 바이트부터 세 번째 바이트까지를 의미합니다.
cut -b 3- oldboy.txt #<==3-은 세 번째 바이트부터 줄 끝까지를 의미합니다.
cut -b -3,3- oldboy.txt #<==이렇게 작성하면 한 줄 전체가 출력되며 두 개의 연속된 문자 a가 겹치지 않습니다.
cut -b 2-10 oldboy.txt#<==참고: -c 옵션을 사용하면 문자를 단위로 사용하고 출력은 정상이 됩니다. -b 옵션은 바이트(8 바이너리 비트)로만 계산하므로 출력이 왜곡됩니다. 다중 바이트 문자가 나타나면 -n 옵션을 사용하여 cut에게 다중 바이트 문자를 분할하지 않도록 지시할 수 있습니다.
cut -d : -f 1 /etc/passwd #<==옵션 -d는 ":"를 구분 기호로 지정하고 -f 옵션은 표시할 첫 번째 영역을 지정합니다.
분할: 파일 분할
분할 [옵션] [입력 파일] [출력 파일 이름 접두사]
Split -l 10 inittab new_#<== 10줄씩 분할하며 분할 파일 이름은 new_로 시작합니다.
Split -l 10 -a 3 inittab new2_#<==매개변수 -a는 접미사 길이를 지정합니다.
Split -l 10 -d inittab num_#<== 매개변수 -d는 숫자 접미사를 사용합니다.
Split -b 500K -d lvm lvm_#<==파일을 500KB마다 분할합니다.
붙여넣기: 파일 병합
붙여넣기 [옵션] [파일]
Paste test1 test2 #<==2개의 파일이 한 줄씩 병합됩니다.
Paste -d: test1 test2 #<==":"를 구분 기호로 사용하세요.
Paste -s test1 #<==1열의 내용을 1행으로 변환하려면 -s 옵션을 사용하세요.
Paste -s test1 test2 #<==각 파일은 한 줄을 차지합니다.
정렬: 텍스트 정렬
정렬 [옵션] [파일]
sort oldboy.txt #<== 매개변수를 받지 않고 파일 내용을 ASCII 코드로 변환한 다음 비교합니다. ASCII 코드에서는 숫자의 순서가 우리가 인식하는 것과 동일하므로 결과는 다음과 같습니다.
sort -n oldboy.txt #<==숫자를 작은 것부터 큰 것까지 직접 정렬하려면 -n 옵션을 사용하세요.
sort -nr oldboy.txt #<== 이 함수와 유사하며, ls 명령에서 이미 배웠습니다. -r 옵션은 역순을 의미합니다. sort 명령은 기본적으로 오름차순(작은 것부터 큰 것까지)으로 정렬합니다. -r 옵션을 사용하면 내림차순(큰 것부터 작은 것까지)으로 변경됩니다.
sort -u oldboy.txt #<==파일에서 중복된 줄을 제거하려면 -u 옵션을 사용하세요. 중복된 줄도 제거할 수 있는 uniq 명령을 나중에 배우게 될 것입니다.
sort -t " " -k2 oldboy1.txt #<== -t 옵션은 구분 기호로 공백을 지정하고, -k 옵션 뒤에 2가 오는 것은 두 번째 열에 따라 정렬한다는 의미입니다.
결합: 동일한 필드로 두 파일을 병합합니다.
Join [옵션] [파일1] [파일2]
Join a.txt b.txt#<==참고: Join을 사용하여 파일을 병합하기 위한 요구 사항은 두 파일을 정렬별로 정렬해야 한다는 것입니다.
uniq: 중복 행 제거
uniq [옵션] [파일 또는 표준 입력]
uniq oldboy.txt #<==매개변수를 사용하지 않고 중복된 줄을 제거합니다.
uniq -c oldboy.txt #<==Parameter -c 해당 줄의 발생 횟수를 표시합니다.
sort -n oldboy.txt|uniq -c#<==uniq는 인접한 중복 행만 중복 제거할 수 있으므로 sort를 사용하여 파일을 먼저 처리한 다음 중복 제거해야 합니다.
wc: 파일의 줄 수, 단어 수, 바이트 수를 계산합니다.
wc [옵션] [파일]
화장실 /etc/inittab 26 149 884 /etc/inittab #<==매개변수를 허용하지 않는 경우 표시되는 숫자는 무엇을 의미합니까?
wc -l /etc/inittab #<==줄 수.
wc -m /etc/inittab #<==문자 수.
wc -w /etc/inittab #<==단어 수.
wc -L /etc/inittab #<==가장 긴 줄의 길이.
iconv: 변환된 파일의 인코딩 형식
iconv [옵션] [원래 인코딩] [새 인코딩] [입력 파일]
iconv -f gb2312 -t utf-8 GB2312.txt #<== 파일의 원래 인코딩을 gb2312로 지정하려면 -f 매개변수를 사용하고, utf-8로 변환할 인코딩을 지정하려면 -t 매개변수를 사용합니다.
dos2unix: DOS 형식 파일을 UNIX 형식으로 변환
dos2unix [파일]
diff: 두 파일의 차이점을 비교합니다.
diff [옵션] [파일1] [파일2]
차이점 테스트1 테스트2 1,3d0 #<==파일 1의 1~3번째 줄을 삭제하고, 파일 2의 0번째 줄을 삭제합니다. 즉, 삭제하지 않습니다.
6a4,5 #<==파일 1의 6행, 즉 텍스트 2의 4행과 5행에 다음 두 줄의 텍스트를 추가합니다.
diff의 기본 표시 형식에는 다음 세 가지 프롬프트가 있습니다. ·a-추가 ·c-변화 ·d-삭제
diff -y test1 test2 #<==나란히 출력하려면 -y 매개변수를 사용하세요.
diff -y -W 30 test1 test2 #<==위의 내용이 너무 넓다고 생각되면 -W 매개변수를 사용하여 너비를 지정할 수 있습니다.
diff /etc/rc3.d/ /etc/rc6.d/ #<==diff는 파일 내용의 차이점을 비교할 수 있을 뿐만 아니라 디렉터리에 있는 파일의 차이점도 비교할 수 있습니다.
vimdiff: 시각적 비교 도구
vimdiff [옵션] [파일1] [파일2]
Vimdiff는 vim을 호출하여 파일을 엽니다. 동시에 2개, 3개 또는 4개의 파일을 열 수 있으며 최대 4개의 파일을 열 수 있으며 파일 간의 차이점을 구별하기 위해 서로 다른 색상을 사용합니다.
vimdiff 테스트1 테스트2 #<==vimdiff 인터페이스를 종료하려면 vim을 두 번 연속 종료하는 작업(:q)을 실행해야 합니다. vim 명령에 대해서는 나중에 자세히 설명합니다. vimdiff 명령은 vim 함수를 호출하기 때문에 종료 작업은 vim과 동일합니다.
rev: 출력 파일 내용 반전
개정 [파일]
echo {1..10}|rev #<==위 문자는 거꾸로 쓰여졌습니다.
rev oldboy.txt #<==앞서 배운 tac 명령어와 비교해 볼 수 있습니다.
tr: 문자 교체 또는 삭제
tr [옵션] [문자1] [문자2]
tr 명령은 표준 입력에서 문자를 대체, 축소 또는 삭제하고 결과를 표준 출력에 기록합니다.
tr 'abc' 'xyz' < oldboy.txt #<==파일을 연결하는 tr 명령은 특별하며 리디렉션 기호 "<"가 필요합니다.
tr '[a-z]' '[A-Z]' <oldboy.txt #<==소문자를 대문자로 변환합니다.
tr '[0-9]' '[a-j]' < oldboy.txt #<==숫자 0을 a로 바꾸고, 1을 뼈...일대일 대응으로 바꿉니다.
tr -d 'oldboy'<oldboy.txt #<==문자를 삭제하려면 매개변수 -d를 사용하세요.
tr -d ' \t' < oldboy.txt #<== 모든 줄바꿈 문자와 탭 문자를 제거하려면 -d 매개변수를 사용하세요. 모든 줄이 한 줄이 되고 문자가 서로 연결됩니다.
echo 'oooolllddbbboyyyyy' |tr -s oldboy #<==연속 문자를 하나로 압축하려면 -s 매개변수를 사용하세요.
tr '0-9' '*' < oldboy.txt #<==모든 숫자를 *로 바꿉니다.
tr -c '0-9' '*' < oldboy.txt #<==매개변수 -c를 사용합니다. 숫자를 제외하고 줄바꿈을 포함한 다른 문자는 *로 대체됩니다.
od: 다른 베이스에 파일 표시
od [옵션] [파일]
티: 다중 타겟팅
tee [옵션] [파일]
ls|tee ls.txt #<==ls 명령은 채널 및 tee 명령을 인계받아 ls 결과를 화면에 출력하고 그 결과를 ls.txt에 씁니다.
ls|tee -a ls.txt #<==파일의 기존 콘텐츠를 지우지 않고 파일에 콘텐츠를 추가하려면 매개변수 -a를 사용하세요.
vi/vim: 일반 텍스트 편집기
vim [옵션] [파일]
vim의 세 가지 모드
일반 모드
편집 모드
일반 모드에서는 편집 입력 작업을 수행할 수 없습니다. "i, I, o, O, a, A, r, R, s, S"(이 중 "I"는 문자)를 눌러야 편집 모드로 들어갈 수 있습니다. 가장 일반적으로 사용됨) 텍스트 입력과 같은 편집 작업을 수행합니다. 파일이 편집 모드에 있는지 확인하는 중요한 기능은 창의 왼쪽 하단에 삽입 표시 "--INSERT--" 또는 "--INSERT--"가 있어야 한다는 것입니다.
명령 모드
일반 모드에서 ":", "/" 또는 "?"를 입력하면 커서가 자동으로 해당 줄을 찾습니다. 이 모드에서는 저장, 종료, 검색, 바꾸기, 줄 번호 표시 및 기타 관련 작업을 수행할 수 있습니다.
vim에서 파일을 여는 방법 요약
vim 파일: 새 파일을 열거나 생성하고, 라인 1의 시작 부분에 커서를 놓습니다. file은 임의의 파일 이름입니다.
vim 파일 n: 파일을 열고 n번째 줄의 시작 부분에 커서를 놓습니다. n은 자연수입니다.
vim 파일: 파일을 열고 마지막 줄의 시작 부분에 커서를 놓습니다.
vim 파일 /pattern: 패턴과 일치하는 첫 번째 문자열에 커서를 놓고 패턴은 임의의 문자열입니다.
12장 리눅스 시스템에서 일반적으로 사용되는 내장 명령
일반적으로 사용되는 Linux 내장 명령의 예
help내장 명령 도움말 보기
help [옵션] [내장 명령]
help #<==Linux의 모든 내장 명령을 보려면 help 명령을 사용하십시오.
help help #<== "help 내장 명령" 형식을 사용하면 내장 명령에 대한 도움말을 볼 수 있으며 도움말 자체도 내장 명령입니다.
help cd #<==cd 명령에 대한 도움말 문서를 봅니다.
help -d cd #<==내장 명령에 대한 간략한 설명을 출력합니다.
help -m cd #<==man 도움말 형식으로 표시합니다.
help -s cd #<==명령어 구문만 출력합니다.
자리 표시자":"
if [ $i -eq 1 ] #<==조건식. 그 다음에 : #<==쉘 스크립트에서 if 판단 문을 사용하는 경우 일반적으로 판단이 성공한 후 특정 작업이 수행되지만 때로는 어떤 작업을 수행해야 하는지 알 수 없거나 특정 작업을 수행할 필요가 없는 경우도 있습니다. 하지만 if 문의 고정된 구문 형식으로 인해 공백을 차지하도록 명령을 작성해야 합니다. 이 줄에 내용이 없으면 구문 오류가 보고되기 때문입니다. 이때 ":" 자리 표시자는 다음과 같습니다. 사용되지만 걱정하지 마십시오. 이 명령은 쉘 스크립트에 아무런 영향을 미치지 않으며 다른 프로그래밍 언어의 pass 필드와 약간 비슷합니다. 또 다른 에코 "Hello World" fi
"." 및 소스
"." 및 소스는 Shell 스크립트를 로드하거나 실행하는 데 자주 사용되지만 기존의 Shell 스크립트를 실행하는 방법과 다릅니다. 아래 비교를 살펴보겠습니다.
·첫 번째 방법인 bash script-name 또는 sh script-name은 스크립트 파일 자체에 실행 권한이 없을 때(즉, 파일 권한 속성의 x 비트가 -) 자주 사용되는 방법입니다. 인터프리터는 스크립트 파일 시작 부분에 지정되지 않습니다. 필요할 때도 필요합니다.
·두 번째 방법은 source script-name 또는 .script-name입니다. 이 방법은 일반적으로 source 또는 "."(점)을 사용하여 지정된 Shell 스크립트 파일(예: san.sh)을 읽거나 로드한 다음 순차적으로 실행합니다. 지정된 쉘 스크립트 파일 san.sh의 모든 문. 이러한 명령문은 현재 상위 쉘 스크립트 father.sh 프로세스에서 실행됩니다(다른 여러 모드에서는 하위 스크립트를 실행하기 위해 새 프로세스를 시작합니다). 따라서 source 또는 "."를 사용하면 san.sh 자체 스크립트에 있는 함수의 변수 값 또는 반환 값을 현재 상위 쉘 스크립트 father.sh에 전달하여 사용할 수 있습니다.
조건부 테스트 "[" 및 테스트
·테스트 조건 테스트의 구문 형식은 다음과 같습니다. test<테스트 표현식> ·[] 조건부 테스트의 구문 형식은 다음과 같습니다: [<테스트 표현식>]
괄호 양쪽 끝에는 공백이 있어야 한다. []는 test와 동일하다. 즉, test의 모든 판단 옵션은 []에서 바로 사용할 수 있으나, []를 사용하는 것이 좋다.
test -f file && echo true || echo false #<== 파일 file 이 존재하고 일반 파일이면 true 이므로 false 가 출력됩니다.
[ -f /tmp/oldboy.txt ] && echo 1 || echo 0 #<== /tmp/oldboy.txt 파일이 존재하고 일반 파일이면 해당 파일이 존재하지 않으므로 0이 출력됩니다.
명령 별칭 alias 및 unalias
별칭 [명령 별칭]=[명령문] unalias [명령 별명]
alias #<==매개변수가 없으면 모든 명령 별칭이 표시됩니다.
alias rm='echo "rm을 사용하지 마십시오."' #<==echo "rm을 사용하지 마십시오." 명령문에 대한 별칭 이름 rm을 정의하고 작은따옴표로 묶인 명령문은 실행 가능해야 합니다.
alias rm #<==rm이 가리키는 명령문을 쿼리합니다.
alias eth0='cat /etc/sysconfig/network-scripts/ifcfg-eth0' #<==eth0 별칭을 정의합니다.
·사람의 실수를 방지하기 위해 rm의 별칭과 같은 위험한 명령에 일부 보호 매개변수를 추가합니다. ·많은 복잡한 문자열이나 명령을 eth0의 별칭과 같은 간단한 문자열이나 명령으로 변환합니다.
unalias eth0 #<==unalias를 사용하여 별칭 삭제
백그라운드 작업 관련 명령 bg/fg/jobs
bg 명령은 포그라운드 실행 작업을 백그라운드로 전송하거나 백그라운드 일시 중단된 작업을 실행하는 데 사용됩니다. fg 명령은 bg 명령과 반대이며 실행을 위해 백그라운드 작업을 포그라운드로 전송합니다. 백그라운드 작업 목록을 보려면
bg [작업 순서 번호] fg [작업 순서 번호] 직업
루프에서 벗어나다
#!/bin/bash for((i=0; i<=5; i )) 하다 if [ $i -eq 3 ] ;그러면 break; #<==전체 루프에서 벗어나 루프 외부에서 프로그램을 계속 실행합니다. fi $i를 에코해 완료 에코 "알았어"
다음 루프로 계속
#!/bin/bash for((i=0; i<=5; i )) 하다 if [ $i -eq 3 ] ;그러면 continue; #<==이 루프를 종료하고 다음 루프를 계속합니다. fi $i를 에코해 완료 에코 "알았어"
eval은 매개변수를 명령으로 실행합니다.
echo `hostname -I` #<==따옴표 안에 명령을 실행하려면 백틱(백틱이라고도 함)을 사용해야 합니다.
echo '`hostname -I`' #<==백틱은 작은따옴표로 묶입니다. 작은따옴표의 기능은 보이는 대로 결과를 얻을 수 있다는 것입니다. 따라서 결과는 `hostname -I`입니다. `호스트 이름 -I`
eval echo '`hostname -I`' #<==명령 시작 부분에 eval 명령을 추가하세요. 작은따옴표는 유효하지 않습니다! eval 명령은 먼저 작은따옴표 안에 있는 변수나 명령을 구문 분석하거나 실행할 수 있기 때문입니다.
종료 셸 명령줄을 종료합니다.
exit #<==셸 명령줄을 종료하려면 종료 명령, Ctrl D 단축키 또는 로그아웃 명령을 사용할 수 있습니다.
#!/bin/bash for((i=0; i<=5; i )) 하다 if [ $i -eq 3 ] ;그러면 exit #<==exit 명령이 실행되면 전체 스크립트가 종료되고 나머지 스크립트 내용은 다시 실행되지 않습니다. fi $i를 에코해 완료 에코 "알았어"
내보내기보기 또는 전역 변수 설정
내보내기 [옵션]
내보내기 -p #<==모든 환경 변수를 인쇄하려면 p 옵션을 사용하십시오.
import MYENV=7 #<==export 명령을 사용하여 설정된 변수만 전역 변수입니다.
기록 명령 기록 보기
역사 [옵션]
History #<==명령의 모든 기록 기록을 표시합니다.
History 10 #<== 숫자 n이 뒤에 오는 숫자 n은 가장 최근의 n 명령 레코드가 표시된다는 것을 나타냅니다.
역사 -d 991 #<== "history -d 역사 명령 순서 번호"는 지정된 순서 번호의 역사 명령을 지울 수 있습니다.
History -c #<==모든 명령의 기록을 지우려면 -c 옵션을 사용하십시오.
대화형 할당 변수 읽기
read 명령은 표준 입력에서 한 줄을 읽고 입력 줄의 각 필드 값을 Shell 변수에 할당합니다.
읽기 [옵션] [변수 이름]
read #<==read 명령을 실행하고 명령줄이 입력을 기다리고 있습니다. oldboy #<==oldboy라는 문자열을 입력하세요.
echo $REPLY #<==read 얻은 입력은 기본적으로 REPLY 변수에 저장됩니다.
read one #<==read 뒤에는 변수 이름이 오고 입력 데이터가 이 변수에 할당됩니다.
read one two #<==read 뒤에는 여러 변수 이름이 올 수 있습니다. n1 n2 #<== 기본적으로 공백은 구분 기호로 사용됩니다. 첫 번째 문단 n1은 첫 번째 변수 1에 할당되고 두 번째 문단 n2는 두 번째 변수 2에 할당됩니다.
read one two m1 m2 m3 #<==입력 데이터가 변수 개수를 초과하면 최종 값은 모두 마지막 변수에 할당되고 m1은 변수 1에 할당되며 "m2 m3"은 변수 2에 함께 할당되었습니다.
read -p "나이를 입력하세요:" age #<==나이 변수 앞에 공백이 하나 이상 있어야 합니다! -p 매개변수를 사용하여 보다 사용자 친화적인 명령줄에 표시되는 프롬프트 문을 정의합니다.
read -t 3 -p "나이를 입력하세요:" age #<==대기 시간(초)을 지정하려면 -t 매개변수를 사용하세요. 명령이 자동으로 종료됩니다.
-s 옵션은 읽기 명령에 입력된 데이터(예: 비밀번호)가 화면에 표시되는 것을 방지합니다.
read -n 3 -p "3자만 입력할 수 있습니다. 믿을 수 없다면 시도해 보세요:" num
유형은 명령 유형을 결정합니다.
유형 [옵션] [명령]
매개 변수 없이 ls #<==를 입력하면 ls의 주요 정보가 표시됩니다.
type -a ls #<==모든 관련 정보를 표시합니다.
ulimit는 시스템 리소스 사용 제한을 수정합니다.
ulimit 명령은 시스템 자원의 사용량을 확인하는 데 사용되며 프로세스나 사용자가 시스템 자원에 할당한 할당량을 수정할 수도 있습니다.
한도 [옵션]
ulimit -a는 현재 시스템 리소스 사용량 제한을 모두 표시합니다.
ulimit -n 1024 #<==새 시스템에서 열린 파일(파일 설명자라고도 함)의 기본 최대 수는 1024입니다. 이 값은 프로덕션 환경의 서버에 비해 너무 작으므로 이 값은 일반적으로 서버 최적화 중에 조정됩니다. . 큰.
ulimit -n 65535 #<==조정량은 65535인데, 명령을 통한 조정은 현재 창에만 적용되므로 구성 파일을 수정해야 합니다.
echo '* - nofile 65535' >> /etc/security/limits.conf #<==구성 파일을 수정하고 영구적으로 적용합니다.
설정하지 않으면 변수가 지워집니다.
unset OLDBOY oldgirl #<==unset 명령은 변수 값을 지울 수 있습니다.
11장 Linux 시스템 관리 명령
lsof: 프로세스가 연 파일 보기
lsof [옵션]
lsof /var/log/messages는 파일을 사용하는 프로세스를 보여줍니다.
lsof -c rsyslog #<==지정된 프로세스에 의해 열린 파일을 표시하려면 -c 옵션을 사용하십시오.
lsof -p 1277 #<==지정된 프로세스 번호로 열린 파일을 표시하려면 -p 옵션을 사용하십시오.
lsof -i #<==모든 프로세스를 봅니다.
lsof -i tcp #<==모든 tcp 네트워크 연결의 프로세스 정보를 표시합니다.
lsof -i :22 #<==포트 22를 사용하는 프로세스를 표시합니다. 이 명령은 매우 일반적으로 사용됩니다.
lsof -i tcp:22 #<==TCP와 포트 22를 모두 충족하는 프로세스를 표시합니다.
lsof -u oldboy #<==oldboy 사용자가 사용하는 파일을 표시하려면 -u 옵션을 사용하십시오.
lsof -U #<==모든 소켓 파일을 표시하려면 -U 옵션을 사용하십시오.
가동 시간: 시스템의 실행 시간과 로드를 표시합니다.
가동 시간
무료: 시스템 메모리 정보 보기
무료 [옵션]
free #<==매개변수가 없으면 기본 표시는 바이트 수이므로 이해하기 어렵습니다.
free -m #<==메모리 사용량을 MB 단위로 표시하려면 -m 옵션을 사용하세요.
free -h #<==-h 옵션을 사용하면 실제 크기를 기준으로 KB, MB, GB 단위로 자동 변환하여 메모리 사용량을 표시합니다.
free -h -s 10 #<==초 단위로 정기적으로 메모리 사용량을 새로 고치려면 -s 옵션을 사용하세요.
iftop: 네트워크 인터페이스 트래픽 정보를 동적으로 표시합니다.
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo 냠 -y iftop 설치
iftop [옵션]
iftop 인터페이스: eth0 #<==모니터링 시스템의 첫 번째 네트워크 카드는 기본적으로 사용됩니다. -i 옵션을 사용하여 모니터링 네트워크 카드를 지정할 수 있습니다.
iftop -nNBP ·-n: DNS 확인을 수행하지 않고 IP 숫자 주소를 표시합니다. ·-N: 포트 번호를 숫자 형식으로 표시합니다. ·-P: 포트 번호를 표시합니다. ·-B: 기본적으로 트래픽은 비트 단위로 표시되므로 이해하기 쉽도록 계산해야 합니다. 그러나 -B 옵션을 사용하면 트래픽이 바이트 단위로 바로 표시됩니다.
vmstat: 가상 메모리 통계
vmstat [옵션] [간격 [횟수]]
1) vmstat 명령 및 후속 옵션에서는 각 요소 사이에 공백이 하나 이상 있어야 합니다. 2) 지연은 두 출력 사이의 간격을 나타냅니다. 3) 개수는 지연으로 지정된 시간 간격에 따른 통계 수를 나타냅니다.
vmstat #<=="간격" 및 "횟수" 매개변수가 생략되면 보고서가 한 번만 표시되고 종료됩니다.
vmstat 5 #<==는 출력 정보가 5초마다 업데이트되고 출력이 반복되며 Ctrl C 키 조합을 눌러 출력을 중지함을 의미합니다.
vmstat 5 6 #<==은 출력 정보가 5초마다 업데이트되고 6회 계산 후 출력이 중지됨을 의미합니다.
vmstat -a 2 5는 활성 및 비활성 메모리를 표시합니다.
vmstat -s 메모리 사용량 세부 정보를 봅니다.
vmstat -d 디스크 읽기/쓰기를 봅니다.
vmstat -p /dev/sda1 /dev/sda1 디스크의 읽기 및 쓰기 통계를 봅니다.
mpstat: CPU 정보 통계
mpstat [옵션] [시간 간격 [회수]]
1) mpstat 명령 및 후속 옵션에서는 각 요소 사이에 공백이 하나 이상 있어야 합니다. 2) 지연은 두 출력 사이의 시간 간격을 나타냅니다. 3) 개수는 지연으로 지정된 시간 간격에 따른 통계 수를 나타냅니다.
mpstat #<=="시간 간격" 및 "횟수" 매개변수를 생략하면 보고서가 한 번만 표시되고 종료됩니다.
mpstat 5 6 #<==은 출력 정보가 5초마다 업데이트되고 6회 카운트 후 출력이 중지됨을 의미합니다.
mpstat -P 0 #<==첫 번째 CPU의 정보를 표시합니다.
iostat: I/O 정보 통계
iostat [옵션] [간격 [횟수]]
1) iostat 명령 및 후속 옵션에서는 각 요소 사이에 공백이 하나 이상 있어야 합니다. 2) 간격은 두 출력 사이의 간격을 나타냅니다. 3) 개수는 지연으로 지정된 시간 간격에 따른 통계 수를 나타냅니다.
iostat #<=="시간 간격" 및 "횟수" 매개변수가 생략되면 보고서는 한 번만 표시되고 종료됩니다.
iostat 2 3 #<==디스플레이를 2초마다 새로 고치고 총 3번 표시합니다.
iostat -d #<==옵션 -d는 디스크 통계만 표시합니다.
iostat -d -k #<==옵션 -k는 데이터를 kB 단위로 표시합니다.
iostat -d -m #<==옵션 -m은 데이터를 MB 단위로 표시합니다.
iostat -d -x -k #<==옵션 -x는 확장된 정보를 표시합니다.
iostat -c #<==-c 옵션은 시스템 CPU 통계를 표시하는 데만 사용됩니다.
iotop: 디스크 I/O 통계를 동적으로 표시합니다.
아이오톱 [옵션]
아이오톱
sar: 시스템 정보 수집
sar [옵션] [간격 [횟수]]
1) sar 명령 및 후속 옵션에서는 각 요소 사이에 공백이 하나 이상 있어야 합니다. 2) 간격은 두 출력 사이의 간격을 나타냅니다. 3) 개수는 간격으로 지정한 시간 간격에 따른 통계 개수를 나타냅니다.
sar -u 2 3 #<==샘플링 시간 동안 시스템에 있는 모든 CPU의 로드 상태를 표시하려면 -u 옵션을 사용하고, 이어서 2초마다 한 번씩, 3번 통계를 나타내는 2 3을 표시합니다.
sar -q 2 3 #<==실행 큐의 크기를 표시하려면 -q 옵션을 사용하십시오.
sar -r 2 3 #<==샘플링 시간 동안 시스템 메모리 사용량을 표시하려면 -r 옵션을 사용하십시오.
sar -b 2 3 #<==샘플링 시간 동안 버퍼 사용량을 표시하려면 -b 옵션을 사용하십시오.
sar -n DEV 2 3 #<==네트워크 인터페이스 정보를 표시하려면 -n DEV를 사용하십시오.
sar -n EDEV 2 3 #<==네트워크 오류 통계를 표시하려면 -n EDEV를 사용하십시오.
sar -n SOCK 2 3 #<==소켓 정보를 표시하려면 -n SOCK를 사용하십시오.
sar -d 2 3 #<==샘플링 시간 동안 시스템의 모든 하드 디스크 장치의 사용 상태를 표시하려면 -d 옵션을 사용하십시오.
chkconfig: 부팅 서비스 관리
chkconfig [옵션]
chkconfig --list #<==모든 서비스의 상태를 보려면 --list 옵션을 직접 사용하십시오.
chkconfig --list sshd #<==이 서비스의 시작 상태를 표시하려면 시스템 서비스 이름을 지정하십시오.
chkconfig sshd off #<==sshd 서비스를 끄고 레벨 2, 3, 4 및 5에서 자동으로 시작하려면 off를 사용하십시오.
chkconfig sshd on #<==sshd 서비스가 레벨 2, 3, 4 및 5에서 자동으로 시작되도록 하려면 on을 사용하십시오.
chkconfig --level 3 sshd off #<==sshd 서비스를 끄고 레벨 3에서 자동으로 시작하도록 지정하려면 --level을 사용하십시오.
chkconfig --level 3 sshd on #<==sshd 서비스가 레벨 3에서 자동으로 시작되도록 지정하려면 --level을 사용하십시오.
ntsysv: 부팅 서비스 관리
ntsysv [옵션]
ntsysv
설정: 시스템 관리 도구
setup 명령은 사용자 인증 관리, 방화벽 관리, 네트워크 관리, 시스템 서비스 관리를 통합한 텍스트 인터페이스 기반의 시스템 관리 도구입니다.
설정
ethtool: 네트워크 카드 매개변수 쿼리
ethtool [네트워크 카드 장치]
ethtool eth0 #<==지정된 네트워크 카드를 연결하여 네트워크 카드의 매개변수를 표시합니다.
mii-tool: 네트워크 인터페이스 상태 관리
mii-tool [옵션] [네트워크 인터페이스]
mii-tool eth0 #<==어떤 옵션도 허용하지 않고 단순화된 정보를 표시합니다.
mii-tool -v eth0 #<==자세한 정보를 표시하려면 -v 옵션을 사용하십시오.
dmidecode: 시스템 하드웨어 정보 쿼리
dmidecode [옵션]
dmidecode -s system-product-name #<==작성자의 서버 모델은 Dell 2950입니다. 파워엣지 2950
dmidecode -s system-serial-number #<==일련번호 키워드 system-serial-number를 봅니다.
dmidecode -t memory #<== - 메모리 정보만 보려면 -t 옵션 뒤에 memory 키워드를 사용하십시오. dmidecode -t 명령을 통해 더 많은 키워드를 볼 수 있습니다.
lspci: 모든 PCI 장치 표시
lspci [옵션]
lspci -s 02:04.0 #<==02:04.0 예제 1에서 네트워크 카드 장치의 번호를 알 수 있습니다.
lspci -s 02:04.0 -v #<==자세한 정보를 봅니다.
ipcs: 프로세스 간 통신 기능의 상태를 표시합니다.
ipcs [옵션]
ipcrm: IPC 관련 정보 지우기
ipcrm [옵션]
ipcrm -s 0 #<==지정된 semid가 0인 신호 세트를 제거합니다.
rpm: RPM 패키지 관리자
rpm [옵션]
rpm -qpi lrzsz-0.12.20-27.1.el6.x86_64.rpm #<==rpm 패키지 버전, 생성 날짜 및 기타 정보를 표시합니다.
rpm -qpl lrzsz-0.12.20-27.1.el6.x86_64.rpm #<==rpm 패키지의 파일을 봅니다.
rpm -qpR lrzsz-0.12.20-27.1.el6.x86_64.rpm #<==이 rpm 패키지를 설치하는 데 필요한 파일을 확인하세요.
rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm #<==rpm 패키지를 설치하고 -h 매개변수를 사용하여 진행률 표시줄을 표시합니다. #<==rpm은 온라인 설치도 지원하며 URL 주소에 직접 연결됩니다.
rpm -qa lrzsz #<==lrzsz는 소프트웨어 이름이고 ".rpm"으로 끝나지 않기 때문에 여기서 -p 매개변수는 사용되지 않습니다.
rpm -e lrzsz #<== 소프트웨어 패키지를 제거하려면 -e 매개변수를 사용하십시오. 이 매개변수는 일반적으로 필요하지 않은 경우 소프트웨어 패키지를 제거하지 마십시오. 실수로 시스템이 삭제되어 시스템이 손상될 수 있습니다.
rpm -qf $(which ifconfig) #<== 때때로 시스템에 특정 파일이나 명령이 없지만 파일이나 명령이 어떤 소프트웨어 패키지에 속하는지 알 수 없는 경우가 있습니다. -f 쿼리할 매개변수입니다(이 파일이 있는 시스템의 쿼리에서). 예를 들어, 이 예에서 ifconfig 명령은 net-tools 소프트웨어 패키지에 속합니다.
yum: 자동화된 RPM 패키지 관리 도구
yum [옵션] [명령] [패키지]
냠 httpd 설치
yum list httpd #<==httpd 설치 목록을 확인하세요.
yum search httpd #<==httpd 문자열이 포함된 패키지를 검색합니다.
yum grouplist #<==설치 및 제거된 패키지 그룹을 봅니다.
yum groupinstall "SNMP Support" -y #<==패키지 그룹 설치, yum grouplist에서 검색하세요.
10장 Linux 네트워크 관리 명령
ifconfig: 네트워크 인터페이스 정보 구성 또는 표시
ifconfig [네트워크 인터페이스] [옵션]
인터페이스는 네트워크 인터페이스의 이름입니다. Linux의 네트워크 인터페이스 이름은 각각 첫 번째 네트워크 카드, 두 번째 네트워크 카드 및 루프백 인터페이스를 나타내는 eth0, eth1 및 lo 등과 유사합니다. 이 옵션을 추가하지 않으면 시스템의 모든 네트워크 카드 정보가 표시됩니다. 이 옵션을 추가하면 지정한 네트워크 카드 정보가 표시됩니다.
ifconfig 명령을 사용하여 네트워크 카드 정보를 구성하면 네트워크 또는 서버 구성을 다시 시작하면 해당 정보가 무효화됩니다.
네트워크 카드 정보를 구성할 때 ifconfig 명령은 루트 사용자로 실행되어야 합니다.
ifconfig #<==시스템의 모든 네트워크 카드 정보를 표시합니다.
Ifconfig eth0 #<== 명령은 네트워크 카드 이름에 연결되어 표시할 네트워크 카드의 정보를 지정합니다.
ifconfig -a #<==모든 네트워크 카드 정보를 보려면 -a 옵션을 사용하십시오.
ifconfig eth1 up #<==네트워크 카드 이름 뒤에 추가하여 네트워크 카드를 시작합니다.
ifconfig eth1 down #<==네트워크 카드 이름 뒤에 down을 추가하면 네트워크 카드가 종료됩니다.
ifconfig eth0 192.168.120.56 #<==구성해야 하는 네트워크 카드에 IP 주소를 직접 연결합니다.
ifconfig eth0:0 10.0.0.8 netmask 255.255.255.0 up#<== 구문 형식: 별칭 IP 주소 서브넷 마스크 네트워크 카드 활성화
ifconfig eth0:1 10.0.0.9/24 up #<==두 번째 IP 별칭을 추가합니다. 10.0.0.9/24는 10.0.0.9와 동일한 효과를 가집니다. netmask 255.255.255.0, 24는 서브넷 마스크 255.255.255.0 다른 표현 형식입니다. .
ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE#<==MAC 주소를 수정하기 위한 키워드 hw(MAC 주소 설정) ether(네트워크 장치 유형).
ifup: 네트워크 인터페이스 활성화
ifup [네트워크 인터페이스]
ifup eth0 #<==네트워크 인터페이스 eth0을 활성화합니다. eth0이 이미 실행을 시작했기 때문에 프롬프트는 다음과 같습니다. RTNETLINK 답변: 파일이 존재합니다.
ifup eth1 #<==네트워크 인터페이스 eth1을 활성화합니다. 일반적인 상황에서는 출력이 없습니다.
fup eth2 #<==네트워크 인터페이스 eth2를 활성화하고 오류를 보고합니다. eth2의 구성 파일을 찾을 수 없습니다.
ifdown: 네트워크 인터페이스 비활성화
ifdown [네트워크 인터페이스]
ifdown eth1 #<==eth1 네트워크 카드를 닫습니다.
경로: 라우팅 테이블을 표시하거나 관리합니다.
경로 [옵션]
Route #<==기본적으로 Route 명령은 IP 주소에서 DNS 확인을 수행하여 호스트 이름을 생성합니다.
Route -n #<==DNS 확인을 수행하지 않으려면 -n 옵션을 사용하십시오. 그러면 표시 속도가 빨라집니다.
Route del default #<==게이트웨이 방법 1을 삭제합니다.
Route add default gw 10.0.0.2 #<== 게이트웨이 추가 방법 1, 게이트웨이 주소 10.0.0.2 또는 기타 올바른 주소를 지정해야 합니다.
Route del default gw 10.0.0.2 #<==게이트웨이 방법 2를 삭제합니다.
Route add default gw 10.0.0.2 dev eth0#<==게이트웨이 방법 2를 추가합니다. dev를 사용하여 여러 네트워크 장치가 있는 호스트에 적합한 네트워크 장치를 지정합니다.
arp: 시스템의 arp 캐시를 관리합니다.
arp [옵션]
arp #<==arp 캐시의 모든 항목을 표시합니다.
arp -n #<==arp 캐시의 모든 항목을 숫자로 표시하려면 -n 옵션을 사용하십시오.
arp -n 10.0.0.1 #<==10.0.0.1의 arp 정보를 조회하려면 지정합니다.
arp -s 10.0.0.100 00:0c:29:c0:5a:ef #<==IP 주소와 MAC 주소를 바인딩합니다.
arp -d 10.0.0.100 #<==정적 ARP 바인딩을 삭제합니다.
ip: 네트워크 구성 도구
ip [옵션] [네트워크 개체] [작동 명령]
ip link show dev eth1 #<==eth1 네트워크 카드 속성을 표시합니다.
ip -s link show dev eth1 #<==자세한 속성을 표시합니다.
ip -s -s link show dev eth1 #<==더 자세한 속성을 표시하려면 두 개의 -s를 사용하십시오.
ip link set eth1 up #<==eth1 네트워크 카드를 활성화합니다.
ip link set eth1 down #<==eth1 네트워크 카드를 끕니다.
ip link set eth1 address 0:0c:29:13:10:11 #<==MAC 주소를 수정하세요.
ip a #<==효과는 IP 주소와 동일합니다. 표시된 결과에는 활성화된 네트워크 카드와 비활성 네트워크 카드가 포함됩니다.
ip a add 172.16.1.12/24 dev eth1 #<== add 옵션을 사용하여 IP 주소 172.16.1.12, 서브넷 마스크 255.255.255.0, 축약형 172.16.1.12/24를 추가하고 dev 옵션을 사용하여 네트워크를 지정합니다. 장치를 eth1로 지정합니다.
ip a add 172.16.1.13/24 dev eth1 #<==보조 IP라고 하는 여러 IP 주소를 추가할 수 있습니다. 이전 ifconfig 명령으로 생성된 별칭은 IP입니다. 요즘 하트비트, 킵얼라이브 등 일반적으로 사용되는 고가용성 소프트웨어는 모두 보조 IP를 사용합니다.
ip a del 172.16.1.12/24 dev eth1 #<==기본 IP를 삭제하고, ip 명령으로 설정한 IP 주소를 삭제한 후, 이전 add 명령의 add 옵션을 del로 직접 변경합니다.
·네트워크 카드의 기본 IP 주소를 삭제하면 네트워크 카드의 모든 IP 주소도 삭제됩니다. ·네트워크 카드의 보조 IP 주소를 삭제해도 네트워크 카드의 다른 IP 주소에는 영향을 미치지 않습니다.
ip a add 10.0.0.20/32 dev eth1 label eth1:1 #<== 별칭 IP를 생성하려면 label 옵션을 사용하세요.
ip Route|column -t #<==column 명령을 사용하여 서식을 지정하고, 옵션 -t는 기본적으로 공백 구분에 따라 입력 행의 열 수를 결정하여 테이블을 생성합니다.
ip Route add 10.1.0.0/24 via 10.0.0.253 dev eth0 #<==정적 경로 추가.
ip Route del 10.1.0.0/24 #<==정적 경로를 삭제합니다.
ip neighbor #<==arp 캐시를 보려면 neighbor 명령어를 사용하세요.
ip neighbor add 192.168.1.100 lladdr 00:0c:29:c0:5a:ef dev eth0 #<==고정 ARP를 추가하세요.
ip neighbor del 192.168.1.100 dev eth0 #<==고정 ARP를 삭제합니다.
netstat: 네트워크 상태 보기
netstat [옵션]
netstat -an #<== 일반적으로 사용되는 -a 및 -n 조합은 모든 연결 정보를 표시합니다.
netstat -ltup 위 명령문의 기능은 모든 TCP 및 UDP 수신 연결 정보를 표시하는 것입니다. ·-l: LISTEN 상태의 모든 네트워크 연결을 표시합니다. ·-n: DNS 확인 없이 IP 주소를 호스트 이름과 도메인 이름으로 표시합니다. ·-t: 모든 TCP 연결을 표시합니다. ·-u: 모든 UDP 연결을 표시합니다. ·-p: 프로세스 번호와 프로세스 이름을 표시합니다.
netstat -rn #<==라우팅 테이블 정보를 표시하려면 -r 옵션을 사용하십시오. -n 옵션은 명령 실행 속도를 높이기 위해 DNS 확인을 수행하지 않습니다.
ss: 네트워크 상태 보기
ss 명령은 netstat와 유사한 도구이며 TCP, UDP 연결, 포트 등을 포함한 네트워크 상태 정보를 보는 데 사용할 수 있습니다. 네트워크 연결 상태에 대한 자세한 정보를 점점 더 많이 표시할 수 있다는 장점이 있으며, netstat보다 빠르고 효율적입니다.
시스템에 ss 명령이 없으면 이를 설치해야 합니다. ss 명령은 iproute 패키지에 속하므로 설치 명령은 yum-y install iproute입니다.
ss [옵션] [필터]
ss -an #<==모든 소켓 연결을 표시합니다.
ss -an|column -t #<==위 출력은 문서에 작성하면 약간 지저분해집니다.
ss -lntup|column -t #<==수신 중인 모든 TCP 및 UDP 연결을 표시합니다.
ss -s #<== 현재 확립되고, 닫히고, 고아가 되고, 대기 중인 TCP 소켓의 수를 셉니다.
ping: 호스트 간 네트워크 연결 테스트
ping [옵션] [대상 호스트]
ping www.oldboyedu.com #<==ping 명령은 도메인 이름이나 IP에 직접 연결되며 ping 결과가 항상 표시됩니다.
핑 -c 3 -i 3 -s 1024 -t 255 www.oldboyedu.com ·-c 3: ICMP 패킷을 3번 보냅니다. ·-i 3: 각 패킷 전송 사이의 시간 간격은 3초입니다. ·-s 1024: 전송된 패킷 크기를 1024바이트로 설정합니다. ·-t 255: 전송된 데이터 패킷의 ttl 값을 255로 설정합니다.
Traceroute: 데이터 전송 라우팅 상태 추적
Traceroute [옵션] [호스트 이름 또는 IP] [패킷 크기]
arping: arp 요청 보내기
아르핑 [옵션]
arping -f 10.0.0.1 #<== 대상 호스트가 살아 있는지 여부를 감지하기 위해 첫 번째 응답이 수신되면 종료하려면 -f 옵션을 사용하십시오.
arping -f 10.0.0.3 #<==실행 중이 아닌 호스트는 응답하지 않으며 명령은 Ctrl C가 종료될 때까지 기다립니다.
텔넷: 호스트에 원격 로그인
telnet [옵션] [호스트 이름 또는 IP] [포트]
telnet 10.0.0.12 22 #<==여기서 10.0.0.12를 리더의 고유 IP로 바꾸세요. 22는 SSH 서비스의 기본 포트 번호입니다.
nc: 다기능 네트워크 도구
nc는 TCP 연결을 설정하고, UDP 패킷을 보내고, TCP 및 UDP 포트를 수신하고, 포트 스캐닝을 수행하고, IPv4 및 IPv6 패킷을 처리할 수 있는 간단하고 안정적이며 강력한 네트워크 도구입니다. 시스템에 nc 명령이 없으면 수동으로 설치할 수 있습니다. 설치 명령은 yum-y install nc입니다.
NC [옵션]
nc -l 12345 >oldboy.nc #<==포트 12345를 수신하고 oldboy.nc에 데이터를 씁니다. #<==위 명령을 실행한 후 현재 창이 정지됩니다. #<==명령을 실행하려면 새 창을 엽니다.
nc 10.0.0.12 12345 <oldboy.log #<==nc 명령을 사용하여 oldboy.log 파일을 10.0.0.12 호스트의 포트 12345로 전송합니다.
nc -z 10.0.0.12 20-30 #<==10.0.0.12 호스트의 포트 20~30을 검색합니다.
nc -z 10.0.0.12 22 #<==단일 주소 또는 주소 범위 뒤에 호스트가 올 수 있습니다.
nc -z -v 10.0.0.12 20-30 #<==스캐닝 과정을 자세히 표시하려면 -v 옵션을 사용하세요.
ssh: 원격으로 호스트에 안전하게 로그인
ssh [옵션] [사용자@][호스트 이름 또는 IP 주소] [원격으로 실행되는 명령]
ssh 10.0.0.29 #<==서버 원격 로그인을 위한 약어 명령어로 ssh -p 22 root@10.0.0.29 와 동일합니다. #<==다음 네 줄은 원격 서버에 처음 연결할 때만 메시지가 표시되고, 다시 연결할 때는 메시지가 표시되지 않습니다.
ssh -p 22 oldboy@10.0.0.29 #<== 원격 서버에 로그인하려면 oldboy 사용자를 사용하십시오. -p는 포트 22를 지정합니다.
ssh 10.0.0.29 "free -m" #<== 원격으로 실행할 명령을 맨 마지막에 넣으면 됩니다. 좀 더 표준화하려면 따옴표를 사용하세요. 현재 보고 있는 서버의 메모리 정보입니다.
ssh -v root@10.0.0.19 #<==디버깅 모드로 들어가려면 -v 옵션을 사용하세요.
wget: 명령줄 다운로드 도구
·중단점 다운로드 기능을 지원합니다. ·FTP 및 HTTP 다운로드 방법을 지원합니다. ·프록시 서버를 지원합니다. ·매우 안정적이며 대역폭이 매우 좁거나 네트워크가 불안정한 상황에서도 적응력이 뛰어납니다. 네트워크 이유로 인해 다운로드가 실패하면 wget은 전체 파일이 다운로드될 때까지 계속 시도합니다. 서버가 다운로드 프로세스를 중단하면 서버에 다시 연결되어 중단된 부분부터 다운로드를 계속합니다. 이는 연결 시간이 제한된 서버에서 대용량 파일을 다운로드하는 데 유용합니다.
wget [옵션] [다운로드 주소]
wget http://www.oldboyedu.com/favicon.ico #<==wget 다운로드 주소로 접속하시면 됩니다.
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #<==epel 소스를 업데이트하는 명령입니다. epel-6이 됩니다. . repo를 다운로드하여 /etc/yum.repos.d/ 디렉터리에 넣고 이름을 epel.repo로 바꿉니다.
wget --limit-rate=3k http://www.oldboyedu.com/favicon.ico #<==최대 다운로드 속도를 3K/s로 설정하려면 --limit-rate 매개변수를 사용하세요.
wget -c 중단점에서 업로드를 재개하려면 -c 매개변수를 사용하십시오.
wget -b http://www.oldboyedu.com/favicon.ico wget-b를 사용하여 백그라운드에서 파일을 다운로드합니다.
wget --user-agent="Mozilla/5.0(Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16(Gecko와 같은 KHTML) Chrome/10.0.648.204 Safari/534.16" http://www.oldboyedu. com/favicon.ico #<==클라이언트 유형을 지정하려면 --user-agent 매개변수를 사용하세요.
wget -q -T 3 --tries=1 --spider www.baidu.com #<== 자동 액세스를 사용하고, 3초 안에 시간 초과되며, 한 번 재시도하고, 크롤러 액세스를 시뮬레이션합니다.
mailq: 메일 전송 대기열을 표시합니다.
메일q [옵션]
mailq #<==메일 대기열을 봅니다.
메일: 메일 보내기 및 받기
메일 [옵션]
mail -s "Hello from oldboyedu" zhangyao@oldboyedu.com #<==받는 사람은 자신의 이메일 주소로 변경해야 합니다. 안녕하세요, 메일 내용입니다. #<==메일 내용 2줄을 직접 입력하세요. www.oldboyedu.com에 오신 것을 환영합니다. EOT #<== 새 빈 줄에 Ctrl D를 입력하여 입력을 종료하고 이메일을 보냅니다.
echo -e "안녕하세요. 메일 내용입니다. www.oldboyedu.com에 오신 것을 환영합니다."|mail -s "oldboyedu에서 안녕하세요" zhangyao@oldboyedu.com 명령 설명: echo 뒤에는 이메일 본문이 옵니다.
#<==단일 첨부파일을 보냅니다. [root@oldboy ~]# echo "test"|mail -s "test" -a favicon.jpg zhangyao@oldboyedu.com
#<==여러 개의 첨부파일을 보냅니다. [root@oldboy ~]# echo "test"|mail -s "test" -a favicon.jpg -a web.sh zhangyao@oldboyedu.com
nslookup: 도메인 이름 쿼리 도구
nslookup [옵션] [도메인명/IP] [DNS 서버]
·대화형 모드: 사용자는 도메인 이름 서버에 다양한 호스트 및 도메인 이름에 대한 정보를 쿼리하거나 도메인 이름의 호스트 목록을 출력할 수 있습니다. ·비대화형 모드: 호스트 또는 도메인 이름에 대한 특정 이름이나 필수 정보만 얻습니다.
nslookup - 223.5.5.5 #<==도메인 이름 확인을 위한 서버 주소를 명령줄에서 직접 지정할 수 있지만, 쓰기에 주의하고 "-"를 놓치지 마세요.
nslookup www.oldboyedu.com 223.5.5.5 #<==비대화형 쿼리 www.oldboyedu.com 도메인 이름.
발굴: 도메인 이름 쿼리 도구
발굴 [옵션]
발굴 www.oldboyedu.com
dig @223.5.5.5 www.oldboyedu.com #<==@를 사용하여 쿼리할 DNS 서버를 지정하세요.
dig -x 101.200.195.98 #<==도메인 이름 역방향 확인을 위해 -x 옵션을 사용하세요.
dig -t MX oldboyedu.com #<==쿼리 유형을 선택하려면 -t 옵션을 사용하세요.
dig @223.5.5.5 www.oldboyedu.com Trace #<==도메인 이름 확인의 전체 프로세스를 IP로 표시합니다.
dig nocmd nocomment nostat www.oldboyedu.com #<== 일부 설명 정보를 단순화합니다.
짧게 알아보세요 www.oldboyedu.com
호스트: 도메인 이름 쿼리 도구
호스트 [옵션]
호스트 www.oldboyedu.com #<==host 명령은 도메인 이름에 직접 연결할 수 있습니다.
host -a www.oldboyedu.com #<==자세한 정보를 쿼리하려면 -a 옵션을 사용하세요.
host -a www.oldboyedu.com 223.5.5.5 #<== 지정된 DNS 서버 IP에 직접 연결합니다.
호스트 -t MX oldboyedu.com #<==쿼리 유형을 선택하려면 -t 옵션을 사용하세요.
nmap: 네트워크 조사 도구 및 보안/포트 스캐너
nmap [스캔 유형] [일반 옵션] {스캔 대상}
nmap 10.0.0.12 #<==nmap은 대상 호스트에 직접 연결하여 기본적으로 처음 1~1000개의 포트를 검사합니다.
nmap -p 1024-65535 10.0.0.12 #<==-p 옵션은 스캔 범위를 지정합니다.
nmap 10.0.0.0/24 #<==네트워크 세그먼트 형식을 사용하여 LAN을 스캔합니다.
nmap -sn 10.0.0.0/24 #<==포트를 스캔하지 않으려면 -sn 옵션을 사용하십시오.
nmap -sn 10.0.0.1-10 #<== 이 주소 범위는 스캔에 사용될 수 있습니다.
nmap -O -sV 10.0.0.12 #<==-sV는 서비스 버전 번호를 표시합니다. #<==-O는 시스템 버전을 표시하지만 nmap 명령은 감지된 TCP/IP 지문을 자체 지문 데이터베이스와 비교합니다. 시스템이 지문 데이터베이스에 없으면 인식되지 않습니다.
tcpdump: 네트워크 트래픽 모니터링
tcpdump [옵션] [표현식]
tcpdump #<==기본적으로 tcpdump를 직접 시작하면 첫 번째 네트워크 인터페이스에서 흐르는 모든 패킷을 모니터링합니다.
tcpdump -q #<==기본적으로 tcpdump 명령은 더 많은 정보를 출력합니다. 간소화된 정보를 표시하려면 -q 옵션을 사용할 수 있습니다.
tcpdump -c 5 #<==모니터링할 패킷 수를 지정하려면 -c 옵션을 사용하므로 Ctrl C를 사용할 필요가 없습니다.
tcpdump -i eth0 #<==모니터링할 네트워크 카드를 지정하려면 -i 옵션을 사용하십시오.
tcpdump -n 호스트 10.0.0.1 #<==DNS 확인을 수행하지 않고 표시 속도를 높이려면 -n 옵션을 사용하십시오. 지정된 호스트를 모니터링하기 위한 키워드는 호스트이고 그 뒤에 호스트 이름 또는 IP 주소가 옵니다. 이 명령의 기능은 호스트 10.0.0.1에서 수신 및 전송된 모든 데이터 패킷을 모니터링하는 것입니다.
tcpdump -n src 호스트 10.0.0.1 #<==10.0.0.1에서 보낸 데이터 패킷만 수신합니다. 즉, 소스 주소는 10.0.0.1이고 키워드는 src(소스, 소스 주소)입니다.
tcpdump -n dst 호스트 10.0.0.1 #<==10.0.0.1에서 수신한 데이터 패킷만 수신합니다. 즉, 대상 주소는 10.0.0.1이고 키워드는 dst(대상, 대상)입니다.
tcpdump -nn port 22 #<==-n 옵션을 사용하면 DNS 확인이 수행되지 않지만 포트 22와 같은 일부 프로토콜과 포트가 SSH로 변환됩니다. 독자는 예제 10-4의 출력 결과를 비교할 수 있습니다. 따라서 이 예에서는 -nn 옵션을 사용합니다. 지정된 포트를 모니터링하기 위한 키워드는 port 이고 그 뒤에 포트 번호가 옵니다.
tcpdump -n arp #<==ARP 패킷을 수신하므로 표현식을 arp에 직접 쓸 수 있습니다.
tcpdump -n icmp #<==icmp 데이터 패킷 듣기(아래 모니터링 데이터를 보려면 다른 컴퓨터를 사용하여 이 컴퓨터에 ping을 보낼 수 있습니다)
tcpdump -n ip 호스트 10.0.0.12 및 ! 10.0.0.1 #<==호스트 10.0.0.12가 모든 호스트(호스트 10.0.0.1 제외)와 통신하는 IP 패킷을 가져옵니다.
9장 Linux 프로세스 관리 명령
ps: 프로세스 보기
ps [옵션]
ps -ef #<== UNIX 형식 매개변수, 모든 프로세스를 표시하려면 -e 매개변수를 사용하고, UID, PPID, C 및 STIME 필드를 추가로 표시하려면 -f 매개변수를 사용하십시오.
ps -ef|grep ssh #<==grep을 사용하여 ssh 키워드를 찾으세요.
ps aux #<== BSD 형식 매개변수, a 옵션과 x 옵션을 사용하여 모든 프로세스를 표시하고, u 옵션을 사용하여 프로세스의 사용자 정보를 표시합니다.
ps -u root #<==UNIX 형식 매개변수, 지정된 사용자와 관련된 프로세스 정보를 표시하려면 매개변수 -u를 사용하십시오.
ps -l #<== UNIX 형식 매개변수, -l 매개변수를 사용하면 프로세스 상태를 자세한 형식으로 표시할 수 있습니다.
ps -eH #<==UNIX 형식 매개변수, -e 매개변수를 사용하여 모든 프로세스를 표시하고 -H 매개변수를 사용하여 프로세스 트리를 표시합니다.
ps axf #<==BSD 형식 매개변수, a 및 x 매개변수를 사용하여 모든 프로세스를 표시하고 f 매개변수를 사용하여 프로세스 트리를 표시합니다.
ps -o pid,ppid,pgrp,session,tpgid,comm #<==-o 뒤에는 표시할 필드가 옵니다. 이는 명령 결과의 첫 번째 줄과 비교할 수 있습니다.
pstree: 프로세스 상태 트리 표시
pstree [옵션] [프로세스 ID/사용자]
pstree #<==프로세스의 PID 번호를 지정하지 않거나 사용자 이름을 지정하지 않으면 init 프로세스가 루트 프로세스로 사용되며 시스템의 모든 프로세스 정보가 표시됩니다.
pstree mysql #<==mysql은 시스템의 사용자 이름입니다.
pstree -c -p mysql #<==자식 프로세스와 상위 프로세스를 포함한 모든 프로세스를 표시하려면 -c 옵션을 사용하고, 프로세스의 프로세스 번호를 표시하려면 -p 옵션을 사용합니다.
pstree -u #<==프로세스에 해당하는 사용자 이름을 표시하려면 -u 옵션을 사용하십시오.
pgrep: 조건과 일치하는 프로세스 찾기
pgrep [옵션] [일치 기준]
pgrep crond #<==pgrep 명령은 ps 명령과 grep 명령의 조합으로 볼 수 있습니다. pgrep 명령은 crond 필드 필터링을 지정하고 crond 프로세스의 프로세스 번호를 가져옵니다.
pgrep -u root #<==지정된 루트 사용자의 모든 프로세스 번호를 표시하려면 -u 옵션을 사용하십시오.
kill: 프로세스를 종료한다
kill [옵션] [프로세스 번호]
kill -l #<==매개변수 -l은 시스템의 모든 신호를 표시합니다.
kill -l SIGKILL #<== -l 매개변수를 사용하여 신호 이름과 디지털 신호를 교환할 수 있습니다.
kill -s 15 2203 #<==이 형식은 -s 매개변수를 사용하여 값 15의 신호를 보내도록 명시적으로 지정하며 효과는 kill 2203과 동일합니다.
kill -9 2203 #<==Signal 9는 프로세스를 강제 종료하게 되는데, 이로 인해 데이터 손실 등의 부작용이 발생하거나, 단말을 정상 상태로 복구할 수 없게 되므로 프로세스가 종료되지 않는 한 최대한 피해야 합니다. 다른 신호를 사용하여 종료할 수 없습니다.
killall: 프로세스 이름으로 프로세스를 종료합니다.
killall [옵션] [프로세스 이름]
killall crond #<==killall을 사용하여 프로세스를 종료하는 것은 여러 번 실행될 수 있습니다. crond: no process killer #<==이 결과를 보면 이름이 정확하다면 프로세스가 종료되었음을 증명합니다.
killall -w crond #<==-w 매개변수를 사용하면 몇 초 동안 기다린 후 명령 작업이 종료되는 것을 볼 수 있습니다.
killall -u oldboy nginx #<==이 방법은 oldboy 사용자에 속한 모든 nginx 프로세스를 종료할 수 있습니다.
pkill: 프로세스 이름으로 프로세스 종료
pkill [옵션] [프로세스 이름]
pkill crond #<== 예약된 작업 프로세스를 종료합니다.
pkill -t tty1 #<==지정된 터미널의 프로세스를 종료하려면 -t 옵션을 사용하십시오.
pkill -u oldboy #<==지정된 사용자의 모든 프로세스를 종료하려면 -u 옵션을 사용하십시오. 실수로 서비스가 종료되는 것을 방지하려면 동시에 종료할 프로세스 이름을 지정하는 것이 가장 좋습니다.
top: 시스템 내 각 프로세스의 자원 사용량을 실시간으로 표시
상단 [옵션]
top #<==top 명령을 사용하면 일반적으로 어떤 매개 변수도 사용하지 않습니다. 더 강력한 다른 기능이 필요한 경우 대화형 명령을 사용해야 합니다.
top -a #<==매개변수 -a를 사용하여 메모리 사용량에 따라 프로세스를 정렬합니다.
top -b #<==명령 실행 결과가 아래쪽으로 계속 새로 고쳐지는 것을 보려면 -b 매개 변수를 사용하십시오.
top -c #<==명령 이름만 표시하는 대신 프로세스의 전체 명령 경로를 표시하려면 -c 매개변수를 사용하세요.
top-d 3#<==매개변수 -d를 사용하여 업데이트 기간을 3초로 지정합니다. 즉, 명령 결과가 3초마다 새로 고쳐집니다.
top -n 2 #<==업데이트 횟수를 2번으로 지정하려면 -n 매개변수를 사용합니다. 즉, 종료하기 전에 명령 결과가 두 번 새로 고쳐집니다. -n 매개변수를 -d 매개변수와 함께 사용할 수 있습니다. .
top -p 15456 #<==이 프로세스의 정보만 표시하려면 지정된 프로세스 번호 뒤에 -p 옵션을 사용하십시오.
nice: 프로그램이 실행 중일 때 프로그램의 우선순위를 조정합니다.
nice [옵션] [명령문]
nice #<== 명령이 콘텐츠를 수신하지 못하는 경우 현재 시스템 기본 프로그램 실행 우선순위가 0으로 표시됩니다.
nice nice #<== 그 중 첫 번째 nice 명령은 두 번째 nice 명령의 우선 순위를 기본값 10으로 조정합니다. 즉, 우선 순위 0인 시스템의 기본 프로그램에 10을 추가하여 새 프로그램을 얻습니다. Run Priority 10 를 입력한 다음 우선순위 10으로 두 번째 nice 명령을 실행합니다. 마지막으로 두 번째 nice 명령은 현재 프로그램 실행 우선순위가 10임을 보여줍니다.
nice -n -10 vim test2 & #<==nice를 사용하여 -10으로 조정하세요.
renice: 실행 중인 프로세스의 우선순위를 조정합니다.
레니스 [옵션]
레니스 -n 5 -p 2711 #<==renice의 -p 매개변수를 사용하여 프로세스를 값 2711로 지정하고 NI 값을 5로 조정합니다.
nohup: 사용자가 시스템 프로세스를 종료하고 계속 작업합니다.
nohup [옵션]
노후핑 www.oldboyedu.com nohup: 입력을 무시하고 `nohup.out'에 출력 추가#<==현재 터미널이 정지되었습니다. 현재 터미널을 강제로 닫으면(예: 레이블 또는 SSH 클라이언트 도구 닫기) ping 명령이 계속 실행됩니다. 백그라운드에서.
nohup ping www.oldboyedu.com & #<==작업에서는 일반적으로 프로그램이 백그라운드에서 직접 실행되도록 하기 위해 앰퍼샌드와 함께 nohup 명령을 실행합니다.
strace: 프로세스의 시스템 호출을 추적합니다.
추적 [옵션]
strace -tt -f /application/nginx/sbin/nginx #<== -f 매개변수는 대상 프로세스와 대상 프로세스에 의해 생성된 모든 하위 프로세스를 추적합니다. -tt 매개변수는 출력의 각 줄 앞에 정확한 시간 정보를 추가합니다. 마이크로초로, 마지막으로 감지할 명령문은 /application/nginx/sbin/nginx는 Nginx 서비스를 시작하는 명령입니다.
strace -tt -f -e Trace=file /application/nginx/sbin/nginx #<==-e Trace=file은 파일 작업과 관련된 시스템 호출을 추적하는 데만 사용됩니다.
strace -tt -f -e Trace=file -p 1909 #<==작업자 프로세스만 추적하려면 -p 매개변수를 사용하세요. 그러면 결과가 더 간소화됩니다.
strace -c /application/nginx/sbin/nginx #<==프로세스의 모든 시스템 호출에 대한 통계 분석을 수행하려면 -c 매개변수를 사용하세요.
strace -c -o tongji.log /application/nginx/sbin/nginx #<==strace 결과를 파일로 출력하려면 -o 옵션을 사용하세요.
strace -T /application/nginx/sbin/nginx #<==각 시스템 호출에 소요된 시간을 인쇄하려면 -T 옵션을 사용하십시오. 각 호출에 소요된 시간은 호출 라인의 가장 오른쪽 꺾쇠괄호에 표시됩니다.
ltrace: 라이브러리 함수에 대한 프로세스 호출 추적
ltrace [옵션]
ltrace /application/nginx/sbin/nginx #<==ltrace 바로 뒤에는 감지할 명령문이 옵니다.
ltrace -p 3892 #<==프로세스 번호를 지정하려면 -p를 사용하세요.
runlevel: 현재 런레벨을 출력합니다.
런레벨 [옵션]
런레벨 N 3
·0: 종료 ·1: 단일 사용자 모드 ·2: 네트워크가 없는 다중 사용자 모드 ·3: 다중 사용자 모드 ·4: 사용하지 않음 ·5: 그래픽 인터페이스 다중 사용자 모드 ·6: 다시 시작
init: Linux 프로세스를 초기화합니다.
초기화 [옵션]
초기화 0 #<==종료
초기화 6 #<==다시 시작합니다.
서비스: 관리 시스템 서비스
service [서비스 이름] [실행 명령]
명령의 선택적 값에는 시작, 중지, 상태, 다시 시작 등이 포함됩니다.
service --status-all #<==모든 서비스 상태를 표시합니다.
service crond #<==명령문이 완료되지 않으면 도움말 정보가 표시됩니다. crond는 예약된 작업 서비스의 이름입니다.
service crond stop #<==서비스를 중지합니다.
service crond start #<==서비스를 시작합니다.
service crond restart #<==서비스를 다시 시작합니다.
service crond status #<==서비스 상태를 봅니다.
이 명령은 CentOS 7에서 systemctl로 대체되었습니다.
8장 Linux 디스크 및 파일 시스템 관리 명령
fdisk: 디스크 파티셔닝 도구
fdisk [옵션] [장치 이름]
fdisk -l #<==현재 시스템에 있는 모든 디스크의 파티션 정보를 봅니다.
fdisk /dev/sdb #<==매개변수 없이 장치 이름을 직접 연결하여 파티셔닝을 할 수 있습니다.
partprobe: 커널의 하드 디스크 파티션 테이블 정보 업데이트
부품 프로브 [옵션]
partprobe /dev/sdb #<==특정 디스크를 추가하는 것이 가장 좋습니다. 그렇지 않으면 오류가 보고될 수 있습니다. 많은 사람들이 이를 직접 실행하고 결국 오류를 보고하므로 시스템을 다시 시작해야 합니다.
tune2fs: ext2/ext3/ext4 파일 시스템 매개변수 조정
tune2fs [옵션]
tune2fs -l /dev/sda1|grep -i Mount#<== sda1 장치, 즉 /boot 파티션의 마운트 수를 확인합니다.
tune2fs -C 30 /dev/sda1 #<==매개변수 -C는 파일 시스템이 마운트된 횟수를 설정합니다.
tune2fs -c 40 /dev/sda1 #<==매개변수 -c는 강제 자체 테스트를 위한 마운트 수를 설정합니다.
tune2fs -c -1 /dev/sda1 #<==자동 검사 및 기타 기능을 끕니다.
tune2fs -l /dev/sda1|grep -i check #<==검사 기간을 봅니다.
tune2fs -i 10 /dev/sda1 #<==매개변수 -i 설정은 10일마다 확인됩니다.
tune2fs -i 0 /dev/sda1 #<==정상 상태로 복원합니다.
parted: 디스크 파티셔닝 도구
parted [옵션] [장치 이름]
parted -l #<==모든 디스크 파티션에 대한 정보를 표시합니다.
mkfs: Linux 파일 시스템 생성
mkfs [옵션] [장치 이름]
mkfs -t ext4 -v /dev/sdb #<==자세한 정보를 표시하려면 -v 매개변수를 사용하십시오.
mkfs.ext4 /dev/sdb #<==이 작성 방법이 더 간단하고 효과는 동일합니다.
dumpe2fs: ext2/ext3/ext4 파일 시스템 정보 내보내기
dumpe2fs [옵션] [장치 이름]
resize2fs: ext2/ext3/ext4 파일 시스템 크기 조정
resize2fs [옵션] [장치 이름]
fsck: Linux 파일 시스템 확인 및 복구
fsck [옵션] [파일 시스템]
파일 시스템을 확인하기 전에 마운트 해제해야 합니다. 그렇지 않으면 오류가 발생할 수 있습니다. 평소에는 디스크를 검사할 때 이 명령을 사용할 필요가 없으며, 시스템을 켰을 때 디스크 오류가 표시되는 경우에만 실행하면 됩니다.
1) 부팅 프롬프트에 따라 복구하는 것 외에도 시스템 디스크를 사용하여 복구 모드 또는 단일 사용자 모드로 들어가 시스템 오류를 복구할 수도 있습니다. 2) 컴퓨터가 부팅되어 정상적으로 작동하는 동안 디스크를 확인하기 위해 fsck를 실행하지 마십시오. 일반 디스크에 오류가 발생할 수 있습니다. 3) /etc/fstab의 마지막 열 번호가 1 또는 2이면 시스템 전원이 켜질 때 fsck를 읽어 이러한 시스템 디스크에 대한 자체 테스트를 수행합니다. 4) 이미 마운트된 파일 시스템에서는 fsck와 같은 디스크 복구 명령을 실행하지 마십시오. 실패할 수 있습니다.
dd: 파일 변환 또는 복사
dd [옵션]
dd if=/dev/sda1 of=dev_sda1.img #<==if를 사용하여 /dev/sda1에서 데이터를 읽고, of를 사용하여 현재 디렉터리의 dev_sda1.img에 대한 출력을 지정합니다.
dd if=/dev/zero of=test.data bs=1M count=2 #<==/dev/zero에서 데이터를 읽어 test.data에 씁니다. 생성된 파일 test.data의 크기는 bs*count입니다. =1M *2=2M.
dd if=test.txt conv=ucase of=test.txt_u#<==conv 매개변수를 사용하여 소문자를 대문자로 변환하려면 ucase를 설정하세요.
마운트: 파일 시스템 마운트
마운트 [옵션] [장치] [디렉토리]
마운트된 디렉터리는 미리 존재해야 하며 비어 있지 않은 경우 장치를 마운트한 후 이전 디렉터리 내용은 덮어지지만 해당 장치가 손상되더라도 원래 디렉터리의 내용은 손상되지 않습니다. 제거되면 이전 디렉터리 내용에 다시 액세스할 수 있습니다.
mount #<== 시스템의 장착 정보를 보려면 mount 명령을 직접 입력하고 Enter를 누르십시오.
mount -l #<==매개변수 -l로도 마운트 정보를 볼 수 있습니다.
mount /dev/cdrom /mnt #<==-t iso9660은 여기에 지정되지 않지만 mount 명령이 자동으로 인식합니다. mount: 블록 장치 /dev/sr0은 쓰기 금지되어 있으며 읽기 전용으로 마운트되어 있습니다.#<== 장치가 쓰기 금지되어 있고 읽기 전용으로 마운트되어 있음을 묻는 메시지가 표시됩니다.
mount -o remount,rw / #<==remount는 "/"를 rw(읽기 및 쓰기 가능)로 다시 마운트하려고 시도합니다.
umount: 파일 시스템 마운트 해제
마운트 해제 [옵션] [디렉토리|장치]
umount 제거는 마운트 지점 디렉터리나 장치 파일에 연결할 수 있습니다.
umount /mnt #<==는 마운트 지점에 연결하여 제거할 수 있으며, umount /dev/cdrom도 제거할 수 있습니다.
umount /mnt/ #<== 현재 mnt 디렉터리에 있기 때문에 제거할 수 없습니다. 여기서는 첫 번째 방법을 수행하여 현재 디렉터리를 종료하고 제거합니다.
umount -lf /mnt/ #<==방법 2: -lf 매개변수를 사용하여 강제로 제거합니다.
df: 파일 시스템 디스크 공간 사용량 보고
df [옵션] [<파일 또는 디렉터리>]
명령 뒤의 file 매개변수를 지정하지 않으면 모든 디스크 파티션의 사용량이 표시됩니다. 파일을 지정하면 해당 파일이 있는 디스크 파티션의 사용량이 표시됩니다.
df #<==명령어 뒤에 파일 매개변수를 지정하지 않으면 모든 디스크 파티션의 사용량이 표시됩니다.
mkswap: 스왑 파티션 생성
mkswap [옵션] [장치 파일]
mkswap /dev/sdb #<==기본적으로 전체 디스크를 스왑 파티션으로 사용할 수 없습니다.
mkswap -f /dev/sdb #<==전체 디스크를 스왑 파티션으로 사용하려면 -f 매개변수를 사용하십시오.
swapon: 스왑 파티션 활성화
스왑온 [옵션]
swapon /dev/sdb #<==스왑 파티션을 활성화합니다.
swapon -s #<==두 개의 스왑 파티션이 있는지 확인하려면 -s 옵션을 사용하십시오.
swapoff: 스왑 파티션을 끕니다.
스왑오프 [옵션]
스왑 파티션을 닫을 때 스왑 파티션이 사용 중이 아닌지 확인하세요. 그렇지 않으면 시스템에 "장치가 사용 중입니다"라는 오류 메시지가 표시됩니다.
swapoff /dev/sdb #<==/dev/sdb 스왑 파티션을 닫습니다.
swapoff -a #<==모든 스왑 파티션을 닫습니다.
동기화: 파일 시스템 버퍼 플러시
동기화 [옵션]
sync #<== 출력 없이 sync 명령을 여러 번 실행합니다.
7장 리눅스 사용자 관리 및 사용자 정보 조회 명령
useradd: 사용자 생성
useradd [옵션] [사용자 이름] useradd -D [옵션]
useradd ett는 사용자를 생성할 때 동일한 사용자 이름을 가진 사용자 그룹도 생성합니다. 이 예에서는 ett라는 시스템 사용자를 추가했습니다. /home/ 디렉터리를 보면 시스템이 자동으로 로그인 후 사용자의 시작 디렉터리인 ett 디렉터리, 즉 홈 디렉터리를 생성한 것을 알 수 있습니다.
useradd -g sa -u 901 oldgirl #<==생성된 사용자 oldgirl은 sa 그룹에 속하며 uid는 901입니다.
useradd -M -s /sbin/nologin tingting #<==-M은 홈 디렉토리를 생성하지 않습니다. -s는 사용자가 로그인한 후 쉘을 지정합니다. 여기서는 /sbin/nologin이며 이는 로그인이 금지됨을 의미합니다. 이 예제는 프로덕션 시나리오에서 Nginx 및 MySQL과 같은 서비스를 배포할 때 자주 사용됩니다.
useradd -u 806 -s /bin/sh -c SysUser -G root,sa -e "2017/07/12" -f 2 -d /tmp/inca inca #<==사용자 inca를 추가하고 사용자 설명 정보를 설정합니다. "SysUser", UID는 806으로 지정됩니다. 사용자 그룹 root 및 sa 구성원에 속하며 해당 쉘 유형은 /bin/sh, 홈 디렉터리는 /tmp/inca로 설정되고 사용자 만료 시간은 2017/07/12이며 사용자 권한은 2년 동안 정지됩니다. 만료 후 일.
useradd -D -s /bin/sh #<==기본 로그인 쉘을 수정합니다.
useradd -D -e "2018/07/12" #<==사용자의 기본 유효 기간을 수정합니다.
useradd-D의 기능은 vim/etc/default/useradd를 편집하고 수정하여 완전히 대체할 수 있습니다.
usermod: 사용자 정보 수정
usermod [옵션] [사용자 이름]
usermod -u 888 -s /sbin/nologin -c TmpUser -G root,sa,tech -e "2018/07/12" -f 30 -d /home/inca inca #<==inca의 사용자 댓글 정보는 다음과 같이 수정됩니다. "TmpUser", UID가 999로 변경되고 소유권이 사용자 그룹 root, sa 및 tech 구성원으로 변경되고 해당 쉘 유형은 /sbin/nologin이며 홈 디렉터리는 /home/inca로 설정되고 사용자 만료는 다음과 같습니다. 시간은 2018/07/12이며, 30일 후 정지가 만료됩니다.
userdel: 사용자 삭제
userdel [옵션] [사용자 이름]
userdel zuma #<==zuma 사용자를 삭제합니다.
userdel -r oldgirl #<== -r 매개변수를 사용하여 oldgirl 사용자를 삭제합니다.
groupadd: 새 사용자 그룹 생성
groupadd [옵션] [사용자 그룹]
groupadd -g 123 test1 #<==GID 123으로 test1 사용자 그룹을 추가합니다.
groupdel: 사용자 그룹 삭제
groupdel [사용자 그룹]
groupdel root #<==루트 사용자가 아직 존재하기 때문에 루트 사용자 그룹을 삭제하지 못했습니다.
groupdel은 사용자가 속한 기본 사용자 그룹을 삭제할 수 없습니다.
passwd: 사용자 비밀번호 변경
passwd [옵션] [사용자 이름]
·루트 사용자는 모든 사용자의 비밀번호를 변경할 수 있으며, 일반 사용자는 자신의 비밀번호만 변경할 수 있습니다. ·루트 사용자가 비밀번호를 변경할 때 시스템 비밀번호 규칙을 따르지 않으면 경고 메시지가 표시되지만 비밀번호 설정은 그대로 적용됩니다. 일반 사용자가 비밀번호를 변경할 때 취약한 비밀번호를 사용하면 경고 메시지가 표시되고 변경 내용이 무효화됩니다.
passwd -S oldgirl 루트만이 이를 수행할 수 있습니다. #<==이 매개변수는 루트에서만 실행될 수 있다는 메시지를 표시합니다.
echo "123456"|passwd --stdin oldgirl #<==--stdin 매개변수는 표준 입력에서 비밀번호를 얻을 수 있습니다.
passwd -n 7 -x 60 -w 10 -i 30 oldgirl #<==oldgirl 사용자는 7일 이내에는 비밀번호를 변경할 수 없으며, 60일 후에는 비밀번호를 변경해야 하며, 만료 10일 전에 사용자에게 통보됩니다. 30일 이후에는 로그인이 금지됩니다.
chage: 사용자 비밀번호 유효기간 수정
chage [옵션] [사용자 이름]
chage -m 7 -M 60 -W 10 -I 30 oldboy #<==oldboy 사용자는 7일 이내에는 비밀번호를 변경할 수 없으며 60일 후에는 비밀번호를 변경해야 합니다. Oldboy 사용자에게는 만료 10일 전에 알림이 전송되며 사용자는 비밀번호를 변경해야 합니다. 30일 이후에는 로그인이 금지됩니다.
chage -m7 -M60 -W10 -I30 oldboy #<==두 번째 작성 방법입니다.
chpasswd: 사용자 비밀번호 일괄 업데이트
chpasswd [옵션]
chpasswd #<==명령줄에 chpasswd를 입력하고 Enter를 누르세요. root:123456 #<==형식 사용자 이름: 비밀번호, 사용자가 존재해야 합니다. oldboy:123456 #<==한 줄에 하나씩 #<==새 빈 줄에 Ctrl D를 입력하여 입력을 종료합니다.
su: 사용자 전환
su [옵션] [사용자 이름]
1) 일반 사용자에서 루트 사용자로 전환하려면 su- 또는 su-root를 사용할 수 있으나 루트 비밀번호를 입력해야 전환이 완료됩니다. 2) 루트 사용자에서 일반 사용자로 전환하려면 "su-ordinary username" 작성 방법을 사용할 수 있습니다. 전환을 완료하기 위해 비밀번호를 입력할 필요가 없습니다. CentOS 5. /sbin 및 기타 다음 명령)에서는 일반 사용자를 위한 PATH 변수의 내용을 실행하거나 조정하기 위해 전체 경로를 사용해야 합니다. CentOS 6 및 CentOS 7에는 이 문제가 없습니다. 3) 해당 사용자로 직접 전환하지 않고 특정 사용자 아래에서만 명령을 실행하려면 su-username-c "command"를 사용하면 됩니다.
visudo: sudoers 파일 편집
비쥬도 [옵션]
visudo -c #<==구문 검사를 위해 -c 옵션을 사용하세요.
sudo: 다른 사용자로 명령 실행
sudo [옵션]
사용자 및 사용자 그룹 정보 표시
id [옵션] [사용자 이름]
id #<==는 사용자 매개변수를 허용하지 않으며 기본값은 현재 로그인된 사용자입니다.
id oldboy #<==oldboy 사용자의 정보를 표시하도록 지정합니다.
id -g #<==사용자 그룹 GID를 표시합니다.
id -u #<==사용자 ID를 표시합니다.
id -un #<==사용자 이름을 표시합니다. (-n 매개변수는 숫자를 표시하지 않고 이름을 표시한다는 의미입니다.)
w: 로그인한 사용자 정보 표시
w [옵션] [사용자]
w #<==는 일반적으로 매개변수 없이 사용할 수 있습니다.
w -h #<==헤더 정보의 처음 두 줄을 표시하지 않으려면 -h 매개변수를 사용하십시오.
who: 로그인한 사용자 정보를 표시합니다.
누구 [옵션]
who #<==는 일반적으로 매개변수 없이 사용할 수 있습니다.
who -b #<==시작 시간을 표시합니다.
who -d #<==로그아웃한 사용자를 표시합니다.
who -l #<==로그인 프로세스를 표시합니다.
who -H #<==제목을 표시합니다.
ho -H -a #<==제목을 표시하려면 -H 매개변수를 사용하고, 모든 정보를 표시하려면 -a 매개변수를 사용합니다.
사용자: 로그인한 사용자를 표시합니다.
users #<==동일한 사용자가 여러 번 로그인하는 경우 사용자 이름이 여러 번 표시됩니다.
whoami: 현재 로그인된 사용자 이름을 표시합니다.
whoami 명령어는 현재 로그인된 사용자 이름을 표시하는 데 사용됩니다. 이 명령어는 영어 who am i의 약어라고 볼 수 있습니다.
last: 사용자 로그인 목록 표시
마지막 [옵션]
last #<==는 많은 줄을 표시합니다.
last -10 #<==표시할 줄 수를 지정하며 파이프를 통해 less 명령과 함께 사용할 수도 있습니다.
last oldboy #<==oldboy 사용자의 로그인 상태를 표시하지만 oldboy 사용자가 로그인하지 않아 표시가 비어 있습니다.
lastb: 사용자 로그인 실패 기록을 표시합니다.
마지막 [옵션]
lastb #<==이 명령 실행 결과에 더욱 주의가 필요합니다. 알 수 없는 로그인 실패 정보를 발견하면 로그인을 위해 시스템이 심하게 크랙되었는지 여부를 고려해야 합니다.
lastlog: 모든 사용자의 최근 로그인 기록을 표시합니다.
6장 파일 백업 및 압축 명령
tar: 패키지 백업
tar [옵션] [파일 또는 디렉터리]
tar zcvf www.tar.gz ./html/ #<==Option v는 패키징 프로세스를 표시합니다. 일반적으로 사용되는 패키징 명령 조합 zcvf를 기억해야 합니다. v 옵션, 즉 옵션 조합은 zcf입니다.
tar ztvf www.tar.gz #<==압축 해제 없이 압축된 패키지의 내용을 보려면 옵션 t를 사용하고 파일 속성을 표시하려면 옵션 v를 사용합니다.
tar tf www.tar.gz #<==z 옵션이 지정되지 않은 경우 tar 명령은 압축된 패키지 유형을 자동으로 결정하고 자동으로 gzip 명령을 호출합니다.
tar zxvf www.tar.gz -C /tmp/ #<==옵션 C는 압축 해제 경로를 지정합니다. C가 추가되지 않으면 현재 디렉터리에 압축이 해제됩니다.
tar xf www.tar.gz -C /tmp/ #<==너무 많은 출력을 보고 싶지 않다면 v 옵션을 제거하면 기능이 영향을 받지 않습니다. 동시에 압축 해제 작업이 포함된 경우 z 옵션을 생략할 수도 있으며 tar 명령은 압축된 패키지의 압축 유형을 자동으로 식별할 수 있지만 압축 시 z 옵션을 추가해야 합니다.
tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test #<==테스트 디렉토리 끝에 /를 추가하지 마십시오. 그렇지 않으면 성공하지 못할 것입니다.
tar zcvf www.tar.gz ./html/ --exclude=html/oldboy/test --exclude=html/oldboy #<== 2개 이상의 디렉토리를 제외하는 방법: 여러 개의 --exclude를 병렬로 사용합니다.
tar zcvfX paichu.tar.gz list.txt ./html/ #<==제외할 파일 목록을 연결하려면 매개변수 X를 사용하세요.
tar의 일반 옵션 zcf를 사용하여 파일을 패키징할 때 파일이 /etc/rc.local과 같은 링크 파일인 경우 tar는 링크 파일이 가리키는 실제 파일이 아닌 링크 파일 자체만 패키징하므로 추가 사용 - h 옵션은 소프트 링크 파일에 해당하는 엔터티 파일을 패키지합니다.
패키징할 디렉터리가 상대 경로인 경우 --exclude 뒤에 상대 경로만 올 수 있습니다. ·패키징할 디렉터리가 절대 경로인 경우 --exclude 뒤에 절대 경로 또는 상대 경로가 올 수 있습니다. ·편의상 --exclude 다음에 오는 경로와 패키징 경로는 상대 경로 또는 절대 경로 중 동일한 형식이어야 합니다.
tar zcvf etc.tar.gz 'find etc/ -type f' #<== 일반 파일을 모두 찾으려면 find를 사용하고 tar 명령문에 백틱으로 묶인 find 명령문을 중첩하십시오.
gzip: 파일 압축 또는 압축 풀기
gzip [옵션] [파일]
gzip *.html #<==현재 디렉토리에서 ".html"로 끝나는 모든 파일을 압축하려면 gzip 명령을 사용하십시오.
gzip -l *.gz #<== 압축을 풀지 않고 파일의 압축 정보를 표시하려면 -l 매개변수를 사용하십시오. 원본 파일은 모두 빈 파일이므로 압축률은 0.0%입니다.
gzip -dv *.gz #<==파일의 압축을 풀려면 -d 매개변수를 사용하고, 압축 풀기 과정을 표시하려면 -v 매개변수를 사용하세요.
gzip -c services >services.gz #<== 출력 방향 재지정 기호와 함께 -c 옵션을 사용하여 출력을 services.gz로 지정합니다.
zcat services.gz|head #<==zcat 명령은 압축 파일을 직접 연결하여 압축 패키지를 읽을 수 있습니다.
zcat services.gz >services #<== 또한 직접 압축을 풀고 파일로 리디렉션할 수도 있습니다.
zip: 파일 압축 및 압축
zip [옵션] [파일 또는 디렉터리]
zip services.zip ./services #<==형식: zip 압축 패키지 이름 압축 파일.
zip tmp.zip ./tmp/ #<==디렉토리에 있는 파일만 압축하고, 디렉토리에 있는 파일은 압축하지 않습니다.
zip -r tmp.zip ./tmp/ #<==재귀적으로 압축하려면 -r 옵션을 사용하세요.
zip -r tmp1.zip ./tmp/ -x tmp/services.zip #<==-x 옵션은 압축되지 않은 파일을 지정합니다.
unzip: zip 파일의 압축을 푼다.
unzip [옵션] [압축파일]
unzip -l tmp.zip #<==압축된 패키지의 파일 목록을 보려면 -l 옵션을 사용하십시오.
unzip tmp.zip #<==루트 아래에 직접 파일을 추출합니다. 소스 파일이 여전히 존재하므로 다음 프롬프트가 나타납니다. #<==파일을 교체할지 여부, y 예 nno A모든 파일 교체 N모든 파일을 교체하지 않음 rRename
unzip -v tmp.zip #<==압축 해제 시 일부 정보를 표시합니다.
unzip -o tmp.zip #<==압축 해제 시 덮어쓰기 여부를 묻는 메시지를 표시하지 않습니다.
unzip -d /tmp tmp.zip #<==-d 옵션을 사용하여 디렉터리를 연결하여 압축 해제 디렉터리를 지정할 수 있습니다.
scp: 원격 파일 복사
scp [옵션] [user@host1:파일1] [user@host2:파일2]
scp /etc/services 10.0.0.9:/tmp#<==scp 전송된 파일명 대상 호스트 IP 주소: 전송하려는 디렉터리입니다.
scp -p /etc/services 10.0.0.9:/tmp #<== 전송된 파일 속성을 유지하려면 -p 옵션을 사용하십시오.
scp -rp /tmp 10.0.0.9:/tmp #<==디렉토리를 복사하려면 -r 옵션을 사용해야 합니다.
scp 10.0.0.9:/etc/services #<== 푸시된 명령의 순서를 반대로 하고 10.0.0.9 호스트에서 현재 디렉터리로 /etc/services 파일을 다운로드하세요.
scp -rp 10.0.0.9:/tmp . #<==10.0.0.9 호스트의 tmp 디렉터리를 현재 디렉터리로 가져옵니다.
rsync: 파일 동기화 도구
1) 로컬 모드: rsync [옵션] [소스 파일] [대상 파일]
2) 원격 쉘 액세스 모드를 통해: Pull: rsync [옵션] user@host:소스 파일 [대상 파일] 푸시: rsync [옵션] [소스 파일] user@host:대상 파일
3) rsync 데몬 모드 당기다: rsync [옵션] user@host::source file [대상 파일] rsync [옵션] rsync://user@host:port/source 파일 [대상 파일] 푸시: rsync [옵션] [소스 파일] user@host::대상 파일 rsync [옵션] [소스 파일] rsync://user@host:port/destination 파일
rsync -av /data1/ /data2 #<==소스 디렉터리 끝에 슬래시가 있으면 디렉터리 자체가 아닌 디렉터리의 내용이 복사됩니다.
rsync -av /data1 /data2 #<==소스 디렉터리에 슬래시가 없으면 디렉터리 자체와 디렉터리 아래의 내용이 복사됩니다.
rsync -av /etc/hosts /tmp #<==소스 파일 /etc/hosts와 대상 디렉터리 /tmp가 모두 동일한 호스트에 있습니다.
rsync -av --delete /null/ /tmp/ #<== 옵션 --delete는 tmp 디렉토리의 내용을 빈 디렉토리와 일치하게 만듭니다. 즉, null에 있는 내용은 삭제됩니다. null이 아닌 tmp에 있는 내용이 있으면 삭제해야 합니다. null 디렉터리가 비어 있으므로 이 명령을 사용하면 /tmp 디렉터리의 내용이 모두 삭제됩니다.
rsync -av 10.0.0.9:/tmp/ /tmp #<== 끌어오기.
rsync -av /tmp/ 10.0.0.9:/tmp/ #<==푸시.
rsync -av -e 'ssh -p 22' /tmp 10.0.0.9:/tmp/ #<== 이전의 경우 rsync를 사용하여 동기화된 데이터는 데이터 보안이 필요한 시나리오에서 -e로 전송됩니다. 이 옵션은 SSH 터널을 사용하여 데이터를 암호화하고 전송합니다. -p는 SSH 명령의 옵션이며 SSH 전송을 위한 포트 번호를 22로 지정합니다. 이 명령의 결과는 로컬 /tmp에 데이터를 푸시하는 것입니다. SSH 암호화 터널을 통해 호스트의 /tmp 디렉터리를 10.0.0.9로 변경합니다. 같은 방법으로 "rsync -av -e 'ssh -p 22' 10.0.0.9:/tmp/ /tmp"를 실행하여 10.0.0.9 호스트의 /tmp 디렉터리에서 로컬 /tmp 디렉터리로 데이터를 가져옵니다. SSH 암호화 터널.
5장 리눅스 정보 표시 및 파일 검색 명령
uname: 시스템 정보 표시
이름 없음 [옵션]
uname -a #<==시스템에 관한 모든 관련 정보를 표시합니다.
uname -m#<==64비트 하드웨어 아키텍처.
uname -n#<==호스트 이름은 oldboy입니다.
uname -r#<==커널 릴리스 버전 번호.
uname -s #<==커널 이름.
uname -v#<==커널 버전 번호.
uname -p#<==프로세서 유형은 64비트 CPU입니다.
uname -o#<==운영 체제 이름.
uname -i#<==하드웨어 플랫폼.
호스트 이름: 시스템의 호스트 이름을 표시하거나 설정합니다.
호스트 이름 [옵션]
호스트 이름 #<==매개변수를 사용하지 않으면 호스트 이름이 표시됩니다.
호스트 이름 A #<==hostname 명령을 사용하면 호스트 이름을 추가하여 호스트 이름을 일시적으로 수정할 수 있습니다.
vi /etc/sysconfig/network #<==구성 파일을 수정해야만 시스템이 다시 시작된 후에도 수정된 호스트 이름이 유효한 상태로 유지될 수 있습니다.
CentOS7 시스템에서는 호스트 이름 구성 파일이 /etc/hostname으로 변경됩니다. /etc/sysconfig/network를 수정해도 적용되지 않습니다.
호스트 이름 -s #<==짧은 형식의 호스트 이름을 표시합니다.
호스트 이름 -a #<==호스트의 별칭을 표시합니다.
호스트 이름 -i #<==네트워크 상태가 좋지 않으면 결과가 매우 느려집니다.
호스트 이름 -I #<== 시스템의 IP 주소를 얻으려면 -I를 사용하는 것이 좋습니다. IP 주소의 수는 IP 주소가 있는 네트워크 카드 수만큼 표시됩니다.
dmesg: 시스템 시작 이상 진단
dmesg [옵션]
dmesg|less #<==하드웨어 결함과 같은 정보를 보는 데 사용되는 less 명령을 통해 페이징의 버퍼 내용을 봅니다.
stat: 파일 또는 파일 시스템 상태를 표시합니다.
stat [옵션] [파일 또는 디렉터리]
du: 디스크 공간 사용량 통계
du [옵션] [파일 또는 디렉터리]
du -a #<==현재 디렉터리에 있는 모든 파일의 크기를 표시합니다(숨겨진 파일과 하위 디렉터리에 있는 모든 파일 포함).
du -s #<==현재 디렉토리의 전체 크기를 표시합니다.
du -h #<==-h 매개변수는 K, M, G와 같이 읽기 쉽고 이해하기 쉬운 결과로 변환됩니다.
du -sh #<==-sh는 일반적으로 사용되는 명령 조합이며 권장되는 방법입니다.
du -sh /usr/local/ #<==지정된 디렉터리의 전체 크기를 표시합니다.
du -h --max-length=1 /usr/local/ #<==첫 번째 수준 디렉터리의 크기만 표시합니다.
du -h --max-length=2 /usr/local/ #<==첫 번째 및 두 번째 수준 디렉터리의 크기만 표시합니다.
du -h --max-깊이=2 /usr/local/ --exclude=/usr/local/share #<==/usr/local/share 디렉토리의 크기를 표시하지 않습니다.
날짜: 시스템 시간 표시 및 설정
날짜 [옵션] [날짜 형식]
date %y #<==연도 표시(짧은 형식).
date %Y #<==연도 표시(긴 형식).
date %m #<==월을 표시합니다.
date %d #<==요일을 표시합니다.
date %H #<==시를 표시합니다.
date %M #<==분 표시.
날짜 %S #<==초를 표시합니다.
date %F #<==특수 형식의 날짜(년-월-일)를 표시합니다.
date %T #<==특수 형식의 시간을 표시합니다(시:분:초).
date %F -d "-1day" #<==어제를 표시합니다(간결하게 작성).
date %F -d "yesterday" #<==어제를 보여줍니다(영문작성).
date %F -d "-2day" #<==전날을 표시합니다.
date %F -d "1day" #<==내일 표시.
date %F -d "tomorrow" #<==내일 표시(영문작성).
date %F -d "2day" #<==2일 후를 표시합니다.
date %F -d "1month" #<==1개월 이후를 표시합니다.
date %F -d "1year" #<==1년 후를 표시합니다.
date -s 20170706 #<==은 20170706으로 설정되고 특정 시간은 비어 있습니다(00:00:00).
date -s 00:00:03 #<==특정 시간을 설정하면 날짜가 변경되지 않습니다.
date -s "00:00:03 20170706" #<==전체 시간을 설정할 수 있습니다.
echo: 텍스트 한 줄을 표시합니다.
에코 [옵션] [텍스트]
echo Hello world! #<==echo는 출력하려는 텍스트를 직접 받습니다.
echo "hello world" >>hello.txt #<== 파일에 텍스트를 쓰려면 추가 리디렉션 기호 ">>"를 사용하세요.
echo -n "oldboy";echo "oldboy" #<==줄을 나누지 않고 한 줄에 출력을 출력하려면 -n 옵션을 사용하십시오.
감시: 명령 실행 모니터링
watch [옵션] [명령]
watch -n 1 -d netstat -ant #<==netstat에 대해서는 나중에 자세히 설명하겠습니다. -n은 매초 명령 실행을 지정하고 -d는 강조 표시합니다.
watch cat oldboy.log<#==현재 디렉토리에 있는 oldboy.log 파일의 변경 사항을 모니터링합니다.
watch -t cat oldboy.log -t 매개변수에 제목이 표시되지 않습니다.
which: 명령의 전체 경로를 표시합니다.
which [옵션] [명령 이름]
which date #<==date 명령의 전체 경로를 봅니다.
which which #<==지정된 명령에 별칭이 설정된 경우 which 함수를 사용하면 별칭도 표시됩니다.
which cd #<== Bash 내장 명령은 which를 사용할 수 없습니다.
which -a mysql #<==mysql 명령이 포함된 모든 경로가 표시됩니다.
whereis: 명령 및 관련 파일의 전체 경로를 표시합니다.
whereis [옵션] [파일 이름]
어디에 있니?
whereis -b svn #<==실행 파일만 찾습니다.
whereis -m svn #<==man 도움말 파일만 검색합니다.
whereis -s svn #<==소스 코드 파일만 찾습니다.
찾기: 파일 경로를 빠르게 찾습니다.
[옵션] [파일 이름] 찾기
Locate pwd #<==는 찾으려는 파일 이름 바로 뒤에 pwd 문자열이 포함되어 있으면 찾을 수 있습니다.
located -c pwd #<==일치하는 줄의 수만 표시합니다.
/etc/sh #<==일부가 일치하는 한 출력합니다.
Locate /etc/sh* #<== 와일드카드를 사용할 수도 있습니다.
-c /etc/*sh* 찾기
업데이트됨: mlocate 데이터베이스 업데이트
업데이트됨 [옵션]
updateb -vU /root/ #<==-v는 업데이트 프로세스를 표시하고, -U는 업데이트 경로를 지정합니다.
4장 텍스트 처리의 삼총사
grep: 텍스트 필터링 도구
grep 명령은 Linux 시스템에서 가장 중요한 명령 중 하나입니다. 그 기능은 텍스트 파일이나 파이프 데이터 스트림에서 일치하는 행과 데이터를 필터링하는 것입니다.
grep -v "oldboy" test1.txt #<== oldboy 문자열을 포함하지 않는 행을 필터링하고 필터링된 문자열에 주의하고 가능한 한 큰따옴표를 사용하십시오.
grep -n "oldboy" test2.txt #<== oldboy 문자열이 포함된 줄을 출력하고 줄 번호를 표시합니다.
grep -n "." test2.txt #<==는 모든 행의 행 번호를 표시합니다(cat -n test2.txt와 유사). 여기서 "."는 모든 단일 문자와 일치한다는 의미이므로 모든 내용과 일치합니다. , 모든 라인의 라인 번호를 표시합니다.
grep -i "alex" test2.txt #<==Alex를 대소문자를 구분하지 않고 필터링하려면 -i 매개변수를 사용하세요.
grep -Ei "oldboy|alex" test2.txt #<== 대소문자를 구분하지 않으며 oldboy 및 alex가 포함된 문자열을 필터링합니다.
grep -Ei --color=auto "oldboy|alex" test2.txt #<==--color 매개변수를 추가합니다. #<== 일치하는 문자열은 빨간색으로 표시됩니다.
grep -c "oldboy" test2.txt는 일치하는 문자열 수를 계산합니다.
sed: 문자 스트림 편집기
sed [옵션] [sed 내장 명령 문자] [입력 파일]
sed '2a 106,dandan,CSO' person.txt #<==여기에서는 sed 내장 명령과 추가 기능이 사용됩니다.
sed '2i 106,dandan,CSO' person.txt #<==여기에서는 sed 내장 명령 i 삽입 기능이 사용됩니다.
sed '2a 106,dandan,CSO 107,bingbing,CCO' person.txt는 파일의 지정된 줄 뒤에 여러 줄의 텍스트를 추가합니다.
sed '2d' person.txt #<==여기서 sed 내장 명령 d는 삭제 기능을 구현하는 데 사용되어 라인 2의 텍스트 삭제를 지정합니다.
sed '2,5d' person.txt #<== "2,5"는 쉼표로 구분된 숫자 주소의 조합입니다. 해당 기능은 파일의 두 번째에서 다섯 번째 줄의 텍스트를 삭제하는 것입니다(여러 줄 삭제). 행 2와 5를 포함하므로 행 1만 남습니다.
sed 's#zhangyao#dandan#g' person.txt #<==여기에서는 sed 내장 명령 s를 사용하여 대체 기능을 구현하고 전역 대체 플래그 g를 사용하여 파일에서 zhangyao와 일치하는 모든 문자열을 대체합니다. . 문법 형식에 주의해야 합니다. 첫 번째와 두 번째 "#" 사이에 교체할 텍스트 "zhangyao"를 배치하고, 두 번째와 세 번째 "#" 사이에 교체된 텍스트 "dandan"을 배치합니다. 결과적으로 두 번째 줄의 "zhangyao"가 "dandan"으로 대체됩니다.
sed '2p' person.txt #<== 여기서는 sed 내장 명령 p를 사용하여 쿼리 기능을 구현하고, 2행의 내용을 숫자 주소와 조합하여 지정합니다. 2번째 줄의 출력일 뿐만 아니라 파일의 나머지 부분도 표시됩니다. sed 명령에는 기본 출력 기능이 있기 때문입니다.
sed -n '2p' person.txt #<== 위 명령이 중복된 내용을 표시하는 문제를 해결하려면 -n 옵션을 사용하여 기본 출력을 취소하고 일치하는 줄의 텍스트만 출력하므로 필수 옵션 - n과 함께 p 명령을 사용해야 한다는 것을 기억해야 합니다.
sed -n '2,3p' person.txt #<==물론 "2,3" 주소 범위를 사용하면 2~3행의 내용을 볼 수 있습니다.
awk 기본 시작하기
awk [매개변수] '조건 {동작}' 파일...
awk 'NR==5' oldboy.txt #<==위 내용과 비교해보면 확실히 5번째 줄입니다.
awk 'NR==2,NR==6' oldboy.txt
awk '{print NR,$0}' oldboy.txt는 파일의 각 줄 앞에 줄 번호를 추가합니다.
awk 'NR==2,NR==6 {print NR,$0}' oldboy.txt #<==oldboy.txt 파일의 2~6번째 줄을 표시하고 줄 번호를 인쇄합니다.
awk -F ":" '{print $1,$3,$NF}' oldboy.txt는 oldboy.txt 파일의 첫 번째, 세 번째 및 마지막 열을 표시합니다.
awk '{gsub("/sbin/nologin","/bin/bash",$0);print $0}' oldboy.txt 파일의 /sbin/nologin을 /bin/bash로 대체합니다(awk 함수 함수 연습).