>시스템 튜토리얼 >리눅스 >주의 깊은! Linux 시스템에서 라이브러리를 안전하게 삭제하고 파일을 실행하는 방법

주의 깊은! Linux 시스템에서 라이브러리를 안전하게 삭제하고 파일을 실행하는 방법

PHPz
PHPz앞으로
2024-02-14 18:06:03934검색

Linux 시스템에서 파일을 삭제하는 것은 매우 위험한 작업입니다. 특히 삭제하려는 파일이 시스템 라이브러리나 실행 디렉터리에 있는 경우 더욱 그렇습니다. 이러한 파일을 삭제하면 시스템 충돌, 응용 프로그램 오류 및 기타 심각한 결과가 발생할 수 있습니다. 오늘은 불필요한 위험을 피하기 위해 Linux 시스템에서 라이브러리와 실행 파일을 안전하게 삭제하는 방법을 소개하겠습니다.

인터넷에서 일부 운영자나 프로그래머가 실수로 잘못된 rm delete 함수를 입력하여 시스템과 데이터베이스가 삭제되는 경우를 종종 봅니다. 가출에 관해서는 오늘 편집자가 이번 삭제와 가출에 대해 심도 있게 이해할 수 있도록 안내해 드리겠습니다.

주의 깊은! Linux 시스템에서 라이브러리를 안전하게 삭제하고 파일을 실행하는 방법

최근 인터넷에서 한 사진을 봤습니다. (원본 사진의 출처는 알 수 없으며, 제목 사진은 원본 사진을 수정하여 재현한 것입니다.)

알다시피, rm은 삭제를 의미합니다. 이 단어는 간단하고 기억하기 쉽습니다. rf에도 "정크 파일"이라는 설명이 있습니다. sudo도 가능합니다. 권한에 문제가 없는지 확인하세요.

소위 정크 파일을 정리하기 위해 이러한 명령을 실행하는 사람이 있을까요? 말하지 마세요. 말하기가 정말 어렵습니다.

Bash 별칭에 대한 기사를 자주 게시하는데, alias ls=rm -rf, alias cd=rm -rf 등과 같은 고유한 별칭을 "기여"하는 학생들이 항상 있습니다. 이 명령에 속는 사람은 거의 없다고 생각하지만, 모두가 이를 즐기는 경우가 많습니다.

이 사진을 내 친구들에게 보냈는데 내 친구 "Long Shisan"이 이것이 정크 파일을 제거할 뿐만 아니라 정크 시스템 관리자도 제거한다고 말했습니다.

네, 왜 이런 농담이 계속해서 등장하는 걸까요? 문제를 이해하고 싶지 않은 우리 중 일부는 문제가 발생했을 때 원리를 탐구하거나 신뢰성을 확인하지 않고 인터넷에서 명령 예제를 무작위로 찾아 맹목적으로 시도하는 데 익숙하기 때문입니다. 따라서 이와 같은 농담은 "시스템 관리자의 정크"를 제거하는 데 실제로 사용됩니다.

그러면 위의 명령을 탐색하여 여기에 지식 포인트가 몇 개 있는지 확인해 보겠습니다.

rm

에 관한 그런 것들

먼저 이 명령은 Linux 시스템의 루트 디렉터리(/)에 있는 모든 파일을 삭제하는 데 사용됩니다. 두 가지 명령 옵션을 사용합니다:

-r: 재귀, 디렉터리와 그 내용에 대해 재귀 작업을 수행합니다

-f: 강제, 확인 필요 없음

이 두 옵션은 -r과 -f를 별도로 작성하거나 POSIX 규칙에 따라 -rf로 결합할 수 있습니다. 여기서 -r 및 -f 옵션은 확실히 위 그림의 "쓰레기" 및 "파일" 스푸핑이 아닙니다.

다음 매개변수 /*는 루트 디렉터리 / 아래의 모든 파일을 참조합니다.

-r 옵션

-r 옵션은 재귀를 나타냅니다. 즉, 매개변수의 디렉터리와 그 아래의 파일 또는 하위 디렉터리를 재귀적으로 삭제하는 것을 의미합니다.

짧은 옵션 스타일 외에도 이 옵션에는 GNU 스타일의 긴 옵션인 recursive도 있으며 호환성상의 이유로 동의어인 대문자 -R 매개변수도 지원됩니다.

이 옵션이 없으면 디렉터리와 해당 내용이 삭제되지 않습니다.

-f 옵션

-f 옵션을 소개하기 전에 먼저 여기에 나타나지 않는 -i 옵션을 살펴보겠습니다.

기본 rm 명령은 파일이나 디렉터리를 삭제할 때 UNIX 규칙을 따릅니다. 삭제 작업이 성공하기 전후에 자동으로 수행됩니다. 오류가 발생하지 않는 한(삭제하려는 파일이 존재하지 않는 등) 불평하지 마세요.

나중에는 아마도 많은 사람들이 실수로 파일을 삭제하는 경우가 많기 때문에 대부분의 Linux 배포판에서 rm 명령은 -i 옵션이 추가된 별칭입니다:

으아아아

여기서 -i 옵션은 각 삭제 작업 전에 프롬프트를 표시하는 데 사용되며 삭제하기 전에 사용자는 명시적인 확인을 제공해야 합니다.

그러나 때로는 이 프롬프트가 정말 짜증나기 때문에 많은 사람들이 의도적으로 -f 옵션을 사용하여 작업 중 -i 옵션의 동작을 재정의하여 이 별칭의 정의를 의미 없게 만듭니다.

따라서 3개 이상의 파일을 삭제하거나 재귀적으로 삭제하려는 경우 확인 메시지를 표시하는 -I 옵션도 있습니다. 이는 -i 옵션보다 덜 짜증나고 대부분의 잘못된 작업을 방지합니다. 따라서 위 별칭에 -I 옵션을 사용하고 -f 옵션 사용을 피할 수 있습니다.

*** 와일드카드란**

명령에서 *가 디렉터리의 모든 파일을 참조하는 데 사용되는 것을 볼 수 있습니다. 그러나 엄밀히 말하면 * 와일드카드 문자는 점 "."으로 시작하지 않는 모든 파일을 나타냅니다. "."으로 시작하는 파일은 기본적으로 Linux에서 숨겨진 파일입니다.

따라서 이 명령은 / 디렉토리와 .. 디렉토리에서 .로 시작하는 숨겨진 파일을 삭제하지 않습니다. 그러나 재귀 작업 중에 . 및 .. 디렉터리를 제외한 하위 디렉터리의 모든 파일과 하위 디렉터리는 .로 시작하는지 여부에 관계없이 재귀적으로 삭제됩니다. 왜냐하면 재귀 작업은 Bash와 같은 셸에 의한 와일드카드 확장이 아니기 때문입니다.

디렉토리의 내용을 삭제할 때 . 및 ..를 동일하게 처리하지 않는 이유는 무엇입니까? 왜냐하면 1979년부터 rm 명령이 디렉토리를 삭제하는 기능을 갖기 시작했을 때 특히 이 두 개의 특수 디렉토리를 피했기 때문입니다.

루트 디렉터리 보호

특정 경험이 있는 시스템 관리자는 현재 rm 명령에 루트 디렉터리 -preserve-root 및 -no-preserve-root에 대한 한 쌍의 옵션이 있다는 것을 기억할 수 있습니다. 이 옵션 쌍의 의미는 다음과 같습니다.

–preserve-root: 루트 디렉터리를 보호합니다. 이것이 기본 동작입니다.

–no-preserve-root: 루트 디렉터리를 보호하지 않습니다.

이 옵션 쌍은 나중에 rm 명령에 추가되었습니다. 아마도 거의 모든 시스템 관리자가 운영상의 실수를 저질렀을 것이며, 그 중 다수가 루트 디렉터리를 삭제했을 것입니다(저도 그 중 하나입니다). 이런 일이 발생하는 데에는 몇 가지 이유가 있습니다:

입력 오류: 예를 들어 원래는 rm /tmp/test.txt를 입력하려고 했는데 실수로 키보드가 날아가서 추가 공백을 입력했더니 rm /tmp/test.txt가 되었습니다. 루트 디렉터리(/) 뒤에 공백이 보이나요? ! ——이것은 제가 현재 제작 서버에서 저지른 실수입니다.

잘못 초기화되거나 이름이 잘못 지정된 쉘 스크립트 변수: 예를 들어 스크립트 rm -rf /${tmp_dir}에서 tmp_dir 변수가 올바르게 할당되지 않거나 잘못 입력된 경우(원래 tmpdir이었을까요?) 어떻게 될까요? ? 물론 루트디렉토리를 삭제하세요~

이 상황이 끊임없이 발생한다는 점을 고려하여 Linux계에서는 "초보자를 위한 vi 종료 방법"만큼 고전적인 농담이 되었습니다. 따라서 POSIX 7판 사양에서는 이 오류의 가능성을 줄이기 위해 –preserve-root 옵션이 rm 명령에 기본 동작으로 추가되었습니다.

그러나 이 옵션은 이 문서에 설명된 대로 루트 디렉터리(/*)의 모든 파일을 지우는 것을 방지하지 못합니다.

일부 학생들은 왜 –no-preserve-root 옵션이 나타나는지 궁금해할 수 있습니다. 이는 아마도 사용자가 원하는 모든 권한을 제공하고 바보 같은 짓을 하는 것은 운영 체제의 문제가 아니라 사용자의 문제라는 UNIX 철학 때문일 것입니다. 루트 디렉터리의 모든 파일을 정말로 삭제하고 싶다면 어떻게 하시겠습니까?

말하지 마세요. 그런 필요가 있습니다. 예를 들어 chroot 환경에서 모든 파일을 지우고 싶습니다. 여기서는 chroot에 대해 이야기하지 않습니다. 이 디렉토리는 논리적으로 새로운 "루트 디렉토리"를 형성합니다. 감옥에서의 파일 작업은 디렉토리 범위를 벗어날 수 없습니다. 최근 인기를 얻고 있는 Docker, LXC/LXD 등의 컨테이너 기술은 모두 chroot 기술입니다.

UEFI 시스템

좋아요, 당신은 좀 더 독특하고 물리적 환경의 루트 디렉터리에 있는 모든 파일을 지우고 싶을 수도 있습니다! 하지만 Enter 키를 누르기 전에 다시 생각해 보십시오. UEFI 시스템을 사용하고 있습니까?

UEFI 시스템은 펌웨어, 변수 및 설정을 루트 디렉터리의 /sys 파티션에 매핑하므로 UEFI 환경의 루트 디렉터리에 있는 모든 항목을 지우면 /sys도 지워집니다. 이로 인해 파일이 손실될 수 있습니다. UEFI의 예상 설정으로 인해 장치가 차단됩니다.

sudo 권한 상승

루트 및 기타 사용자 등 시스템에 속한 파일을 삭제하려면 이 명령 앞에 sudo를 붙여 권한을 높여야 합니다.

이 명령을 입력하면 비밀번호를 입력하라는 메시지가 표시됩니다. 누구의 비밀번호인가요? 루트 비밀번호가 아닌 현재 명령어를 입력하고 있는 사용자의 비밀번호입니다.

sudo 명령을 실행할 수 있는 사람과 sudo 명령을 통해 실행할 수 있는 명령에 대해서는 여기서 자세히 설명하지 않겠습니다. 그런데 sudo와 su 명령 사이의 연결과 차이점을 구별하는 것을 기억하십시오.

정크 파일

이것을 연구하고 나면 "정크 파일"을 삭제하려는 이 명령의 원래 의도를 잊을 수 없습니다.

Linux에 정크 파일이 있나요? 가지다. 이러한 정크 파일의 출처는 일반적으로 다음과 같습니다.

패키지 관리자가 관리하지 않는 고아 파일은 소프트웨어 패키지가 삭제된 후에도 시스템에 남아 있습니다

쓸데없는 종속성 패키지, 이러한 종속성 패키지가 필요한 소프트웨어가 삭제된 후에도 그에 따라 삭제되지 않습니다

정리할 임시 파일이 없습니다

레거시 진단 파일

그렇다면 이러한 정크 파일을 삭제해야 합니까? 일반적으로 Linux 시스템에 있는 이러한 파일의 대부분은 너무 많아 저장 공간과 inode를 많이 차지하지 않는 한 시스템의 정상적인 작동에 아무런 영향을 미치지 않습니다.

따라서 Linux 시스템이 느리다고 생각된다면 정크 파일 때문이 아닐 가능성이 거의 확실합니다. 적어도 현 시점에서는 Windows 시스템의 경험을 복사할 가치가 없습니다.

이 기사를 통해 Linux 시스템에서 라이브러리를 삭제하고 파일을 실행하는 안전한 방법과 단계에 대해 배웠습니다. 이는 간단한 작업이지만 관련 지식 없이 수행하면 심각한 결과를 초래할 수 있습니다. 데이터를 백업하고, 주의를 기울이고, 필요에 따라 복원하는 것의 중요성을 기억하십시오.

위 내용은 주의 깊은! Linux 시스템에서 라이브러리를 안전하게 삭제하고 파일을 실행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 lxlinux.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제