Arcticooling Asked: 2017-12-11 20:59:04 +0800 CST2017-12-11 20:59:04 +0800 CST 2017-12-11 20:59:04 +0800 CST RAM清理操作无需重新启动 772 假设我在 RAM 中存储了不同的变量,并在扩展变量和引用文件时对有线结果执行了一些操作,如本例所示。 在不重新启动的情况下,最接近所有“人工”RAM 数据的清理是什么? 人工是指我手动插入 RAM 的数据,例如声明一个变量(或者由于我所做的任何操作而输入的变量)。它是会话不自然产生的任何东西(例如环境变量和继承的数据)。 bash memory 1 个回答 Voted Best Answer Basile Starynkevitch 2017-12-12T05:03:35+08:002017-12-12T05:03:35+08:00 假设我在 RAM 中存储了不同的变量 不,您可能没有在 RAM 中存储任何变量。 除非您使用的是/dev/mem(参见mem(4)),这很奇怪并且需要 root 权限。 物理 RAM 由内核管理(仅)。因此,在 RAM 中存储内容的唯一方法是通过内核代码。应用程序代码(甚至是您的Unix shell)在进程中运行,每个进程都有自己的虚拟地址空间并使用虚拟内存。 虚拟地址空间在程序启动时在execve(2)时初始化(例如,通过您的 shell)。当进程终止(或被任何成功的程序重新初始化execve)时,它会被销毁。 在不重新启动的情况下,最接近所有“人工”RAM 数据的清理是什么? 当具有这些“变量”(实际上,它们是虚拟地址空间中的位置)的进程终止时,数据就消失了。如果该进程是一个 shell,您只需要终止它(可能使用exitshell builtin或kill(1)等),但您不需要重新启动。 export 要忘记由shell builtin设置的环境变量,请使用unsetshell 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)中运行该脚本。
不,您可能没有在 RAM 中存储任何变量。
除非您使用的是
/dev/mem
(参见mem(4)),这很奇怪并且需要 root 权限。物理 RAM 由内核管理(仅)。因此,在 RAM 中存储内容的唯一方法是通过内核代码。应用程序代码(甚至是您的Unix shell)在进程中运行,每个进程都有自己的虚拟地址空间并使用虚拟内存。
虚拟地址空间在程序启动时在execve(2)时初始化(例如,通过您的 shell)。当进程终止(或被任何成功的程序重新初始化
execve
)时,它会被销毁。当具有这些“变量”(实际上,它们是虚拟地址空间中的位置)的进程终止时,数据就消失了。如果该进程是一个 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
)中运行该脚本。