RAM에 다양한 변수를 저장하고 변수를 확장하고 파일을 참조하면서 연결된 결과에 대해 일부 작업을 수행한다고 가정합니다.이 경우처럼.
재부팅하지 않고 모든 "인공" RAM 데이터를 정리하는 가장 가까운 방법은 무엇입니까?
수동이란 변수 선언(또는 내가 수행한 작업의 결과로 입력된 데이터)과 같이 RAM에 수동으로 삽입한 데이터를 의미합니다. 세션에서 자연적으로 발생하지 않는 모든 것(예: 환경 변수 및 상속된 데이터)입니다.
답변1
RAM에 다른 변수를 저장한다고 가정해 보겠습니다.
아니요, 아마도 RAM에 어떤 변수도 저장하지 않을 것입니다.
사용하지 않는 한 /dev/mem
(참조메모리(4)) 이상하고 루트 액세스가 필요합니다.
물리적 RAM은 커널에 의해서만 관리됩니다. 따라서 RAM에 무언가를 저장하는 유일한 방법은 커널 코드를 이용하는 것입니다. 애플리케이션 코드(또는 귀하의유닉스 쉘)달리기프로세스, 각각은 자신의가상 주소 공간그리고 사용가상 메모리.
가상 주소 공간은 다음과 같이 초기화됩니다.실행(2)프로그램이 시작된 시간입니다(예: 셸을 통해). 프로세스가 종료되면 execve
삭제됩니다 (또는 성공적인 작업을 수행하는 프로그램에 의해 다시 초기화됨).
재부팅하지 않고 모든 "인공" RAM 데이터를 정리하는 가장 가까운 방법은 무엇입니까?
프로세스에 이러한 "변수"(실제로는장소가상 주소 공간)이 종료되고 데이터가 사라집니다. 프로세스가 셸이라면 그냥 종료할 수 있습니다.exit
내장 케이스, 또는죽이다(1)등...) 하지만 재부팅할 필요는 없습니다.
다음에서 설정한 환경 변수를 잊어버렸습니다.export
내장 케이스, unset
내장 쉘을 사용합니다. 당신은 또한 볼 수 있습니다큰 타격(1)그리고GNU 문서bash
.
어쩌면 당신은 사용하고 싶을 수도 있습니다batch
유용, 아마도 일부와 함께여기 문서. 어쩌면 서브쉘이나 그 자체를 실행하고 싶을 수도 있습니다 bash
.
어쩌면 명확하고 합리적인 실행이 bash
매우 도움이 될 수 있습니다. bash
Putty 세션에서 실행 해 보셨나요 ? 여러 개의 중첩된 쉘을 가질 수 있고 심지어 일부를 실행할 수도 있습니다.다른퍼티 세션의 쉘(예 fish
: ....)
Linux 프로그래밍에 대해 더 자세히 읽어보는 것을 고려해야 합니다(아마도 오래된알칼리성 포스파타제;당신은 또한 볼 수 있습니다소개(2)). 다음에 대해 더 자세히 읽어보고 싶을 수도 있습니다.운영 체제,예를 들어운영 체제: 세 가지 간단한 부분.
쉘의 상태는 다음과 같습니다.아니요 지속성 있는. 틀림없이,시작 파일예를 들어, $HOME/.bashrc
각 대화형 셸이 시작될 때 실행되는 명령을 포함합니다. 그러면 "영구" 설정을 $HOME/.bashrc
파일에 명령으로 넣을 수 있습니다 export
.
Unix 쉘은 일반 프로그램입니다(다음을 사용하여 로그인 쉘을 변경할 수 있습니다).chsh(1);에 새 쉘을 나열해야 할 수도 있습니다 /etc/shells
.쉘(5)). 만족스럽지 않으면 bash
다른 쉘을 사용할 수 있습니다(예:다루기 힘든또는물고기등...) 그리고 자신만의 쉘을 작성할 수 있습니다(아마도 Rust, C++, Ocaml, C, Go 등과 같은 일부 컴파일된 언어를 사용하여). 당신의 껍질은 단지 일부이어야합니다매우 낮은 주파수실행 가능.
(실제로 자신만의 쉘을 작성하는 것은 매우 유용한 연습이며 많은 것을 이해하는 데 도움이 될 것입니다. 또는 적어도 일반적으로 사용되는 일부 기존 쉘의 소스 코드를 연구하는 데 도움이 됩니다.무료 소프트웨어, 아마도 다음과 같이 작을 수도 있습니다허리띠)
또한 명령을 몇 가지로 그룹화하는 것을 고려할 수도 있습니다.쉘 스크립트을 클릭한 다음 putty 세션에서 스크립트를 실행합니다(대화형일 수 있음 bash
).