RAM清理操作無需重新啟動
假設我在 RAM 中儲存了不同的變數,並在擴展變數和引用文件時對有線結果執行了一些操作,如本例所示。
在不重新啟動的情況下,最接近所有“人工”RAM 數據的清理是什麼?
人工是指我手動插入 RAM 的數據,例如聲明一個變數(或者由於我所做的任何操作而輸入的變數)。它是會話不自然產生的任何東西(例如環境變數和繼承的數據)。
假設我在 RAM 中儲存了不同的變數
不,您可能沒有在 RAM 中儲存任何變數。
除非您使用的是
/dev/mem
(參見mem(4)),這很奇怪並且需要 root 權限。物理 RAM 由核心管理(僅)。因此,在 RAM 中儲存內容的唯一方法是通過核心程式碼。應用程式碼(甚至是您的Unix shell)在程序中執行,每個程序都有自己的虛擬地址空間並使用虛擬記憶體。
虛擬地址空間在程序啟動時在execve(2)時初始化(例如,通過您的 shell)。當程序終止(或被任何成功的程序重新初始化
execve
)時,它會被銷毀。在不重新啟動的情況下,最接近所有“人工”RAM 數據的清理是什麼?
當具有這些“變數”(實際上,它們是虛擬地址空間中的位置)的程序終止時,數據就消失了。如果該程序是一個 shell,您只需要終止它(可能使用
exit
shell builtin或kill(1)等),但您不需要重新啟動。
export
要忘記由shell builtin設置的環境變數,請使用unset
shell builtin。另請參閱bash(1)和GNU 的文件bash
。也許您想使用該
batch
實用程序,也許這裡有一些文件。也許你只是想執行一個子 shell,或者bash
它自己。也許明確而明智地執行一些
bash
可能會非常有幫助。您是否嘗試bash
在膩子會話中執行?你可以有幾個嵌套的 shell,你甚至可以在你的 putty 會話中執行一些其他fish
的 shell,例如,…。您應該考慮閱讀有關 Linux 程式的更多資訊(也許是舊的ALP;另請參見intro(2))。您可能想閱讀有關作業系統的更多資訊,例如作業系統:三個簡單的部分。
請注意,shell 的狀態不是 持久的。當然,像這樣的啟動文件
$HOME/.bashrc
包含在每個互動式 shell 啟動時執行的命令(因此您可以將“永久”設置作為命令放在該$HOME/.bashrc
文件中)。export
Unix shell 是普通程序(您可以使用chsh(1)更改您的登錄 shell ;您可能需要在 中列出您的新 shell
/etc/shells
,請參閱shells(5))。如果您不滿意,bash
您可以使用另一個 shell(例如zsh或fish等),並且您可以編寫自己的 shell(可能使用一些編譯語言,如 Rust、C++、Ocaml、C、Go,… .)。你的 shell 應該只是一些ELF執行檔。(實際上編寫自己的shell是一個非常有用的練習,會幫助你理解很多東西;或者至少研究一些現有shell的原始碼,它們一般都是免費軟體,可能小到sash)
您還可以考慮將您的命令分組到一些shell script中,並從您的 putty 會話(這可能是一個互動式的
bash
)中執行該腳本。