一.linux中多个用户如何实现资源分配?
我们知道在linux中一个用户独自拥有一个cpu,一个内存,一条输出总线。为什么一个用户要独占一套系统资源呢?因为假如两个用户开启相同的进程的话,如果是一个内存的话,因为他们占的是相同的内存,根本无法实现,所以需要引入虚拟内存,这里每个用户独占的内存即一个虚拟内存。在上一节中我们了解了cpu分时运行,而对于内存来说,此时一个用户用的是一个虚拟内存,每一个虚拟内存对应真实内存的一个位置。至于i/o总线,通过i/o复用实现。
二.内部命令与外部命令
(1)内部命令实际上是shell程序的一部分,其中包含的是一些比较简单的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的,其执行速度比外部命令快,因为解析内部命令shell不需要创建子进程。比如:exit,history,cd,echo等。
  (2)外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。外部命令是在bash之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin……等等。可通过“echo $PATH”命令查看外部命令的存储路径,比如:ls、vi等.
(3)如何判断一个命令是内还是外?
linux第四天
linux第四天
通过type 命令 来进行判断如果打印出现路径则为外部命令。
(4)打印命令格式或者一个文件的内容格式类型
命令必须遵循特定格式规范: windows上都是exe, msi, 对于linux而言是ELF格式。首先可以用which命令查看路径。
linux第四天
(5)为什么内部命令可以直接输入就执行?
因为一个命令是一个二进制文件,这个二进制文件是加载到环境变量(PATH这个环境变量)中的。‘
(6)如何查看命令退出状态?
先通过帮助查看末尾的退出状态对应的数字,接着输入echo $?可返回状态数字。
linux第四天

linux第四天
man命令(与info命令相似):
以全屏显示在线帮助,按q退出,上,下键移动 格式: man 命令字
一般用man查看一个命令的帮助文档的时候,可以通过whatis查看一下该命令在man帮助文档中的入口,一条命令可能有多个man手册页入口(注:在使用whatis的时候如果linux计算机开机70分钟,那么你可以自己随意使用了,如果linux计算机刚刚启动,那么需要执行makewhatis命令来编译一下,否则无法使用whatis命令)
linux第四天
此处这个是1入口还有其他入口:
linux第四天
vim:
命令模式:dd: 删除当前行
u : 撤销
yy :复制
p :粘贴
x :删除当前字符
/ 文本 : 查找指定文本
?文本 : 从当前文本到文前
n:指定文本向下
N:指定文本向上
翻页:pgup,pgdn,ctrl+F,ctrl+B
0或"^"或home : 跳到行首
$或end :跳到行尾
G: 跳到文尾
gg: 跳到文首
数字gg:
数值G:
编辑模式:i: 所在位置前插入
a: 所在位置后插入
o: 下一行插入
O: 上一行插入
末行模式:在命令模式下敲:进入。
:q 退出
:q!强制退出
:w 保存
:w! 强制保存
:x 保存退出
三.linux bash初始
(1)什么是Shell
shell 命令解释器,其程序存在于用户空间,是人机交互的屏障,对内核其保护作用。
(2)常见shell的种类
sh:
bash: —>大多数Linux发行版的默认shell类型
ksh:
csh:
(3) bash 特点:
1.补全
(1)命令补全
按照环境变量PATH定义的路径查找命名:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

(2)路径补全
在当前显示的路径下查找目录:
[[email protected] ~]# cd /etc/sysconfig/network-scripts/

2.保存历史命令
作用:方便命令操作
查看系统上执行过的命令

(1)查看历史命令:
[[email protected] ~]# history
(2)历史命令将保存在用户家目录下的 .bash_history 文件中。
[[email protected] ~]# vim .bash_history
(3)不同用户将拥独立的历史命令。
(4)历史命令默认不会立即写入文件,当bash程序退出时,写入文件。
(5)保持历史命令存在安全隐患,系统默认保存1000条历史命令。
修改保存历史命令的变量(HISTSIZE):
临时:
linux第四天
永久(写入环境变量):
linux第四天
如何给产生的历史命令加上时间:
我们以前的历史命令纪录时是这样的:
linux第四天
修改后:
linux第四天
此功能的实现需要给/etc/profile文件下加入变量HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S " 。
实例:实时追踪用户行为审计
解释:不管用哪个用户登录都可以将历史命令记录到一起。上面我们讲的查看的历史命令,仅限于每个用户,每一个用户只能查看自己的历史命令。
vim /etc/profile 下添加:
if [ ! -d /usr/local/domob/record/LOGNAME]thenmkdirp/usr/local/domob/record/{LOGNAME} ] then mkdir -p /usr/local/domob/record/{LOGNAME}
chmod 300 /usr/local/domob/record/LOGNAMEfiexportHISTORYFILE="/usr/local/domob/record/{LOGNAME} fi export HISTORY_FILE="/usr/local/domob/record/{LOGNAME}/.bash_history"
export PROMPT_COMMAND=’{ date “+%Y-%m-%d %T ##### $(who am i |awk “{print $1” “$2” “$5}”) #### KaTeX parse error: Expected '}', got 'EOF' at end of input: …d x cmd; echo "cmd”; })"; } >>$HISTORY_FILE’
source /etc/profile
chmod 777 /usr/local/domob/records/ 设置目录权限
chmod +t /usr/local/domob/records/ +t 表示

相关文章: