2024年2月7日发(作者:)
命令
vim /etc/sysconfig/network 改主机名
uname -a 查看当前机器的架构 i386
uname -r 查看当前的内核版本
cat /etc/redhat-release 查看当前系统版本
whoami 查看当前登录的用户
hostname 查看当前的主机名
临时改主机名 hostname [主机名]
pwd 查看当前目录
su 普通切换用户 su - 递归切换用户(包括权限)
gedit 创建新的空白文件
cd 切换目录
~ 用户的家目录
. 表示当前目录
.. 表示上一级目录
- 返回上一次所在的目录
cd 返回用户的家目录
ls 显示当前目录下有那些文件
ls /目录 显示指定目录下有那些文件
命令的语法格式:
命令的名称 [选项] [参数]
命令可以单独使用, 可以不带选项和参数,命令后必须要加空格
可以通过颜色区分文件的类型:蓝色代表目录 浅蓝色代表连接文件
黑色或灰色代表普通文本文件 黄色代表设备文件 如/dev下的文件 红色代表压缩文件 绿色代表有执行权限的文件
.conf 代表配置文件
.tar代表压缩文件
/bin 普通可以使用的命令
/sbin 特权用户可以使用的命令
/lib 应用程序在运行过程中调用的库文件
/media与/mnt 用来挂载移动设备的目录
挂载u盘:如果是fat格式的U盘,挂载命令:mount -t vfat /dev/sdb1
/mnt/udisk
如果是ntfs格式的U盘,挂载命令:mount -t ntfs-3g /dev/sdb1
/mnt/udisk 但是注意,ntfs格式要挂载的话,需要下载一个ntfs-3g-2011.4.12
/etc 应用程序配置文件存放的目录
/dev 设备文件存放的目录
/home 普通用户的家目录
/root 管理员的家目
/lost+found 存放磁盘检测时产生的磁盘碎片文件
/opt 应用程序默认安装目录
/proc 虚拟目录 不占用系统磁盘空间
/selinux 与selinux程序相关的文件
/tftpboot tftp工作目录
1
/tmp 临时文件
/var 存放变化文件(各种服务的日志文件)
/usr 安装源码文件时 源码包文件存放的位置
相对路径 .. 绝对路径 /
相对路径是 从当前目录为起点
绝对路径是 从根目录为起点
ls -l 是长格式显示
ls -a 显示所有内容(包括隐藏文件)
隐藏文件以.开头
ls -d 显示单个目录的文件属性
ls -R 递归显示指定目录下的文件信息
mkdir 目录的名字 (名字不可重名 区分大小写)创建目录(可指定路径)
mkdir -p 同时创建多级子目录
mkdir -m 创建目录时指定目录的权限
rmdir 删除目录命令(只能删除空目录)
rm -rf 删除非空目录及文件 -r 递归 f 强制
touch 创建空文件、更改文件的时间
date 查看时间和日期 修改时间和日期 语法 date “+参数” %Y4位的年 %m两位的月 %d两位的日 %H小时 %M分钟 %S秒
时间和日期的修改:日期 date -s “20120314” 修改时间 date -s“10.15.20”
stat 文件名 查看文件的状态、详细信息
file 文件名 查看文件的类型 查看文件是否为空
mv 移动、重命名
cp 拷贝命令(文件的复制) 不加参数只能考单个文件,要拷贝文件夹要加-r参数。
* 代表0个或多个 (通配符)
{} 范围内的组合 (通配符)
.代表
? 代表任意一个字符
./*的组合代表当前目录下
/*代表根目录下所有文件(危险)
&&解释为 前面的执行成功了就执行后面的,如果前面没成功,就不执行后面的。与||相反。
;按顺序执行命令
对文件内容操作的命令:
2
cat 显示整个文件的全部内容
cat /dev/cdrom >> 会做iso映像
cat -b 显示行号 cat –b 文件名
cat 适合看内容较少的文件
more/less 《文件名》 (适合看内容多的文件)
more 空格翻页(只能向下翻页,不能向上翻页)
less 空格翻页 (可以上下翻页) pg UP向上 pg DN向下
安键盘上的q键 退出查看模式
head 文件名 查看文件头部内容 (默认查看文件的前10行) 可以加参数
head -20 文件名 (看文件开头20行)
tail 文件名 查看文件尾部的内容 (默认查看文件末尾10行) 可以加参数
tail -20 文件名 (看文件末尾20行)
更改网络设置
ifconfig eth0 查看IP地址
ifconfig eth0 192.168.1.1 netmask 255.255.255.0配置ip地址 用命令配置的都是临时的
ifconfig eth0 192.168.1.1/24 配置ip地址 用命令配置的都是临时的
ifconfig eth0:0 ip 一块网卡绑定多个ip地址
ifdown eth0 禁用网卡
ifup eth0 启用网卡
# cd /etc/sysconfig/network-scripts/ 网卡设备文件目录
mii-tool eth0 查看网卡状态
service network restart 重启服务
网络下载 lftp IP地址
get 文件名 为下载文件 mirror 下载文件夹
加载U盘
fdisk -l 查看
fdisk -l | tail -5 显示最后5行
/dev/sdb1 为U盘
mount /dev/sdb1 <挂在目录>
umount <挂载点> 卸载
mount 查看挂载情况
mount -o loop /mnt
加载光盘
# mount /dev/cdrom /mnt
cd /mnt
ls
3
#mount 查看当前加载的设备
/dev/sda3 on / type ext3 (rw)
sysfs on /sys type sysfs (rw)
1 设备名 on 加在点 type 文件系统类型 加载方式(rw)
mount [-t 文件系统类型] [加载方式] <加载的设备> <加载点>
光盘下
Cluster 集群功能的软件包文件
C
images
VT 虚拟化文件
安装文件
tar -zxvf 文件名
./可执行文件
shutdown -r <时间> now
reboot
init 6
以上三条为重启命令
shutdown -h <时间> now
init 0
以上两条为关机命令
补充:
语 法:shutdown [-efFhknr][-t 秒数][时间][警告信息]
参 数:
-c 当执行"shutdown -h 11:50"指令时,只要按+键就可以中断关机的指令。
-f 重新启动时不执行fsck。
-F 重新启动时执行fsck。
-h 将系统关机。
-k 只是送出信息给所有用户,但不会实际关机。
-n 不调用init程序进行关机,而由shutdown自己进行。
-r shutdown之后重新启动。
-t<秒数> 送出警告信息和删除信息之间要延迟多少秒。
[时间] 设置多久时间后执行shutdown指令。
[警告信息] 要传送给所有登入用户的信息。
需要特别说明的是该命令只能由超级用户使用。
例1,系统在十分钟后关机并且马上重新启动
# shutdown –r +10
例2,系统马上关机并且不重新启动
# shutdown –h now
4
du 查看目录的使用情况 -h 按(M)兆 -sh 查看目录的大小
df 查看硬盘的使用情况 -h 按(M)兆 -i 磁盘名看磁盘的inond号
wc 统计文件内容 -l 统计行数 -w 统计单词数
-c 字节数
ps aux | wc -l
文件查找命令
vncviewer IP 远程观看
echo $PATH 查看变量
which 仅限搜索$PATH下的路径
查看外界命令软件包
which <命令名称> 查看命令目录
rpm -qf <命令的目录>
[root@HC sysconfig]# cat /etc/sysconfig/i18n(注意是18数字)
LANG="zh_-8"
查看系统语言 zh_-8 为中文
2012年3月7日
上课第二天
whereis <命令名> -B指定查找的范围 -b 指定命令名 whereis -B
/sbin -b shutdown
grep 在指定的文件内查找 指定的字串是否存在 (把与查找字串匹配的行显示出来)
grep [选项] “查找的字串” <文件名> -c显示匹配的行数 -i匹配时忽略大小写 -v 取反
grep "root" /etc/passwd
echo 输出命令
echo 123 > 把123写到? >覆盖输出 >>追加输出
^以什么为开头 $以什么为结尾
ps aux | grep dhcpd 此命令是查看进程中所有dhcpd
locate 查找文件 (查找范围是在当前的数据库里查找)
updatdb 更新本地数据库(更新根) 用locate前要先更新数据库
find [查找范围] <查找的方式> [-exec 处理动作 可选]
1 根据文件的类型查找 -type 类型 f普通文件 d目录
5
b块设备 s套接字 l连接文件 p管道文件 举例:#
find -type f #find /etc/ -type f
2 根据文件的名字查找 -name 文件名 (*.cf) 可以和通配符组合
find /etc -type d | grep yum
-empty 代表空文件
dirname <路径> 查看文件的目录名
basename <路径> 查看文件的文件名
查看指定目录下子目录的权限
find /etc/ -type d -exec ls -ld {} ;
3 根据文件的所有者 所属组 查找 -user <用户名> -group <用户组名>
4 根据文件的权限查找 -perm <-/+权限表达式> +表示或 只要与查找权限表达式任意一个权限匹配 就符合查找条件 -表示与 必须与查找权限表达式所有权限位匹配 才符合查找条件
5 根据文件的访问时间查找 -mtime文件的属性被修改的天数
-atime文件被访问的时间 -ctime 文件内容被修改的时间
6 查找到文件之后对其进行处理 -exec <处理动作>
7 查找空文件 -empty
8根据文件的大小查找 -size [-/+]数字单位可以是兆M
useradd 添加用户
passwd
dd if=/dev/zero of= bs=10M count=1 ?
帮助命令
--help
man -k 模糊查找 man 1 用户指令 man 2 系统指令 man 3 程序库 man 4 设备
info 例如:info dd
makewhatis 重新生成帮助文档
补充:
makewhatis 呢?其实 whatis 运行的结果是需要把命令的情况检索到它的数据库中的。对于还没有这个数据库的系统,就需要用 makewhatis 命令来让系统立即检索。否则系统将在一定的时候自动检索。通过下面的命令运行的实6
例,大家就应该比较清楚地了解到这一点了。
[root@OwnLinux-server media]# whatis whatis
whatis: nothing appropriate
[root@OwnLinux-server media]# whatis makewhatis
makewhatis: nothing appropriate
[root@OwnLinux-server media]# whatis ls
ls: nothing appropriate
[root@OwnLinux-server media]# makewhatis
[root@OwnLinux-server media]# whatis whatis
whatis (1) – search the whatis database for complete words
[root@OwnLinux-server media]# whatis makewhatis
makewhatis (8) – Create the whatis database
打包 解包 tar
打包 tar <选项> 打包文件名称.tar 打包的源文件 -f 归档 必须要加的参数放在参数的尾端 -c创建一个包文件(用于打包)
-x解开一个打包文件(用于解包) -v显示打包或解包的过程
-t显示打包文件内的列表
--remove打包的同时删除原文件 --get 把某个文件从包中取出 可以是多个(不用解包)
tar -cvf /etc/passwd /etc/gshadow 同时打包2个文件 默认打包到当前目录
tar -cvf /tmp/ /etc/*.conf 指定目录 并配合通配符使用
解包
tar -xvf <包名> 不指定路径就默认解包到当前
-C 解包时指定解包的位置
示例:#tar -xvf <包名> -C /etc
压缩 解压缩
压缩 gzip 只能压缩单个文件,不能压缩目录 如果想对目录进行压缩 要和tar命令连用
压缩后的后缀名为.gz
解压缩 gunzip 只能解压缩单个文件,不能解压缩目录
压缩 解压缩
gzip gunzip
zip unzip
bzip bunzip
gzip [选项] 文件名 -1 快速压缩 -9最高比例压缩
-r递归压缩 (压缩指定目录下的单个文件) -d 解压缩
特点:
7
1 压缩或解压缩时自动删除原文件
2 自动添加后缀名.gz
gzip -9 passwd
tar+gzip
打包并压缩
tar -zcvf <打包的文件名.> <要打包的目录> -z代表gzip
解包并解包
tar -zxvf <打包的文件名.> -C <指定的目录>
bzip2 用来压缩单个文件
特点:压缩或解压缩时删除原文件
bunzip2 解压缩
用法和gzip一样,但是压缩效果比gzip好。
tar+bzip2 名称设置为 .2
tar -jcvf <设置文件名.2> <要打包的目录> 打包压缩
tar -jxvf <文件名> -C <指定解包解压缩的目录> 解压解包
文件编辑
包括:看 查找 修改 保存 删除
vim编辑器
vim <文件名>
特点:1 文件存在就打开文件
2 文件如果不存在,就创建并打开文件
3 如果不在要编辑的文件当前所在的路径下,要输入文件的绝对路径
我要对文件进行不同操作的时候,要使用不同的操作模式
vim编辑器的模式
1 命令行模式 (把一个文件用vim打开时就是命令行模式) 删除 复制
粘贴 光标跳转
光标在行间跳转
gg 将光标定位到文件的首行
shift+g 将光标定位到文件的末行
100gg将光标定位到指定行,如100行
光标在行内跳转
Hpme 把光标定位到行首
end 把光标定位到行尾
Pu UP 向上翻页
Pg Dn 向下翻页
x 删除光标所在位置的字符(单个)
u 撤销刚刚的操作
8
d$ 删除光标后面的字符(包括光标所在位置)
d^ 删除光标所在位置前面的字符(不包括光标所在位置)
dd 删除光标所在的整行
10dd 删除10行
dw 删除一个单词
yy 复制光标所在行的整行
10yy 复制10行
p 粘贴在光标所在行的下方
P 粘贴在光标所在行的上方
dd+p 剪切
ZZ 保存退出
:x 保存退出
2 输入模式 (对文件的内容进行编辑时候要进入输入模式) 进入输入模式的键盘按键 (I i O o A a)区别是输入数据的位置不同 常用i键
I 行首插入
i 光标所在位置插入
O 光标所在行上方插入一行
o 光标所在行下行插入一行
A 行尾输入
a光标后方输入
3 末行模式 (替换 查找 保存 另存为 导入) 从命令行进入末行模式 :
w 保存
q 退出
! 强制
/关键字 搜索关键字(从上往下)
?关键字 搜索关键字 (从下往上)
n 从上往下找
N 从下往上找
:set nohlsearch 去掉高亮显示
替换
:s /old/new/gi 把old替换成new gi表示替换方式 g代表匹配就替换 i表示 忽略大小写 不指定行数 默认为光标所在行 替换整行
:s /old/new/ 把old替换成new 只替换光标所在位置的字符
:3,4s /old/new/ 把3-4行的old替换成new
另存为
:w 文件名 默认存在当前目录下
:w /etc/文件令 指定路径
:1,10w 文件名 另存一部分
导入 (把其他文件的内容放到当前文件)
:r /tmp/文件名
9
:4r /tmp/文件名??????????
:!ls -l 不退出编辑文件 执行系统命令
同时打开多个文件
#vim
:next 切换到下一个
:first 返回第一个
多窗口显示文件(垂直)
vim -O
多窗口显示文件(水平)
vim -o
切换窗口
ctrl+ww(配合上面的多窗口显示文件)
末行模式下显示行号 set nu
末行模式下取消行号 set nonu
第三天 12年3月8日
用户和用户组的管理
用户的添加 修改 删除 与用户相关的系统配置文件
用户密码的设置 配置文件
用户组的添加 修改 删除 与用户组相关的配置文件
用户组密码的设置 配置文件
linux用户的分类
1 特权用户 (root) linux 系统的管理员 拥有最高权限
2 程序用户 服务运行时进程的所有者 ( 程序用户是我们安装完实现某个服务的rpm软件包后自动产生的用户)
3 普通用户 用root用户手动添加的那些用户 (这类用户对系统文件的访问权限有限 如果想对某个文件有访问权限 需要用root用户提升使用权限
用chmod )
添加用户
useradd/adduser [选项] <用户名称>(区分大小写 不能重名、不要用特殊字符和通配符 没有密码的用户不能进入系统)
useradd -u
useradd -g
设置密码
passwd <密码>
存放用户信息的系统文件
/etc/passwd
10
jun : x : 500 : 500 : :
/home/jun : /bin/bash
用户名 密码占位符 UID GID 用户的描述信息
用户的家目录 用户的shell
第一列 用户名
第二列 密码占位符 密码存放在/etc/shadow
第三列 uid号 (root 0 系统用户 1-499 普通用户 500-60000)
第四列 gid号 用户所在的用户组的编号 当我们每创建一个用户
的时候,系统就会自动创建一个与用户同名的组 这个组就是这个用户的初始组 存放当前系统用户组信息的文件 /etc/group
(root 0 系统用户 普通用户 500-60000)
groups 显示当前用户所属组 groups <用户名> 查看指定用户所属组
/etc/group 用户组信息
/etc/gshadow 用户组密码文件
useradd -g 指定用户的初始组 (组要事先存在)
useradd -G 指定用户的附加组 (组要事先存在)
useradd -g tea -G stu user1
注意:当指定了用户的初始组时 系统就不会在创建与用户同名的组名了
第五列 用户的描述信息 添加描述信息:#useradd -c "描述" 用户名
第六列 用户的家目录 当用这个用户登录时 默认进入的目录
每添加一个用户时,系统都会在/home下创建一个与用户同名的目录,这个目录就是家目录
useradd -M <用户名> 创建用户的时候不创建家目录
useradd -d <目录> <用户名> 创建用户时给用户指定家目录 指定的家目录不用事先创建,若目录事先被创建好,系统就不会把/etc/skel目录里的用户初始化环境配置文件自动拷贝到用户指定的家目录里,导致的后果是 用户登录后没有系统的初始化信息,这时得自己手动拷贝初始化信息文件才好,也可以自己手动在/etc/skel 目录里加说明文件
/etc/skel .bash_profile 用户登录系统时候初始文件 .bashrc 每打开一个终端的设置 .bash_logout 每次退出系统的时候 初始化文件
用户家目录下的初始文件,是从/etc/skel目录下复制过来的
第七列 用户登录系统时使用的shell (默认的shell是 /bin/bash)
cat /etc/shells 查看linux可以使用的shell的种类
useradd -s
当一个用户使用的shell是/sbin/nologin这个用户无法登录系统
用户信息的修改
11
usermod [选项] <用户名> -l 改名字
usermod -l <新名> <旧名> 改名 修改后家目录不变
usermod -L <用户名> 锁帐号(对root无效)
usermod -U <用户名> 帐号解锁
删除用户
userdel [选项] <用户名> -r 删除用户的时候,同时删除用户的家目录 (如果不加-r参数 只是把用户的登录名删除了 家还在)
用户被删除 用户的初始组也被删除了
用户密码的设置
用useradd添加一个用户,如果没有给这个用户设置密码,那么是不能使用这个用户登录系统的,但是可以用root 切换
[root@HC ~]# grep jun /etc/shadow
存放用户密码文件 此文件分为9列
root : $1$1O4sQSdd$.gsxo/4cS2gDBVdzK.01.1 : 15405 : 0 :
99999 : 7 : : :
第一列 第二列 第三列
第四列 第五列 第六列 第七 第八列 第九列
第一列 用户名
第二列 密码
第三列 上一次修改密码的时间1970年1月1日
第四列 密码的最短有效天数
第五列 密码的最长有效天数
第六列 提前多少天提醒用户口令将过期,默认值为7
第七列 密码过期后多少天后用户失效
第八列 用户过期时间
第九列 保留列(未用)
passwd [选项] [用户名] 设置密码 如果不跟用户名 默认是修改自己的密码
不加任何选项就是设置、修改用户的密码
-d 删除密码
-l 锁定帐号
-u 帐号解锁
chage
--help
用法:chage [选项]
用户名
选项:
12
-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
-h, --help 显示此帮助信息并退出
-I, --inactive 失效密码 将因过期而失效的密码设为“失效密码”
-l, --list 显示帐户年龄信息
-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小
天数”
-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大
天数”
-W, --warndays 警告天数 将过期警告天数设为“警告天数”
作业
1 强制改密码 修改上次修改密码的时间为0 chage -d 0 <用户名>
2 帐号的最大有效期 30天 chage -M 30 <用户名>
3 限制用户10天修改一次密码 chage -m 10 <用户名>
用户组
groupadd [选项] <组名> 添加一个组(区分大小写)
-g <组id> 添加用户组时,指定组gid号
/etc/group
存放系统已用用户组的信息文件
第一列 组名
第二列 组密码占位符
第三列 组ID号(gid)
第四列 组成员列表
/etc/gshadow
存放组密码的文件
修改用户组信息
添加组
groupmod [选项] <用户组名>
-g 修改用户组的gid号 groupmod -g
-n 给用户组改名 groupmod -n <新组名> <旧组名>
修改文件或目录的所属组
chgrp <组名> <文件名或目录名>
chown <用户名:用户组> <文件名或目录名> 一起修改文件或目录的所有者和所属组
删除组
13
groupdel <用户组名>
newgrp nis 切换组(把当前用户切换到nis组)
用户组密码的设置
gpasswd [组名] 1 设置组密码 gpasswd [选项] <用户名列表>
<用户组名> 2 添加组成员 -a 一次添加一个组成员 -M 一次添加多个组成员(覆盖添加,后面的会把前面的覆盖)
设置组管理员 (权限 添加 删除 组成员)
gpasswd -A <组管理员> <组名> 组管理员 不一定要是本组成员
到/etc/gshadow文件里查看用户组的管理员名称 grep <用户组>
/etc/gshadow
存放用户组密码的文件
/etc/gshadow
第一列 用户组名
第二列 密码
第三列 组管理员列表
第四列 组成员列表
id 查看当前用户id信息
添加用户时的默认配置文件
[root@HC ~]# vim /etc/default/useradd
grep -v "^#" /etc/
第四天
文件权限
1 普通权限 r w x
2 特殊权限 suid sgid skity(set)
3 访问控制列表 facl单独给某个用户或用户组设置权限
普通权限
r w x
文件权限的查看
ll <文件或目录的名字> 查看目录需要-d选项
第一位 权限位(共10位)
第二位 链接数
第三列 文件的所有者
第四列 文件的所属组
第五列 文件的大小(字节)
14
第六列 文件的日期(最后一次操作的时间)
第七列 文件名
权限位
第一个字符表示文件的类型 d目录 -普通文件 l链接文件 p管道文件 c字符设备 s套接字文件 b 块设备
后面九位 每三位 为一组 共分为三组
第一组 文件所有者的权限
第二组 表示的是所属组的权限
地三组 表示其他用户的权限 (这个用户 即不是文件的所有者,又不在文件的所属组内,那么这个用户对于文件来说就是其他用户)
对于一个文件来说 它有三类用户(所有者 所属组 其他用户统称为所有用户)
权限的类型 (针对 目录和文件)
类型 字符表示 数字表示
目录 文件
读 (看、浏览) r 4 可以浏览
可以对文件的内容进行查看
写 (编辑) w 2 可以添加或删除文件
编辑,写入,保存
执行 (运行这个文件)x 1 可以进入目录
允许用户运行这个文件(文件本身有运行能力)
没有权限 (什么都不能作) - 0
一个目录是否能被删除,主要看父目录是否有写的权限
在文件的父目录没有写权限的情况下,要对这个文件添加写权限
-m <权限(数字)> <文件或目录名> 创建的时候指定权限
修改文件的权限
chmod <权限表达式(字符或数字表示 如:766=rwxrw-rw-)> <文件名/目录名>
赋值符号
+ 在原有权限的基础上添加权限
- 在原有权限的基础上去掉指定的权限
= 指定权限
-R 递归修改文件夹权限(把目录下所有文件设置成指定权限)
u 表示文件的所有者
g 表示文件的所属组
o 表示其他用户
a 表示所有用户
15
创建目录权限默认:(管理员建立的是755)(普通用户建立的是775)
创建文件权限默认:(管理员建立的是644)(普通用户建立的是664)
特殊权限 字母 数字 显示 作用
suid s 4 在x位显示 占用所有者的执行位显示 s说明之前所有者有执行权限 S说明之前所有者没有执行权限
当给一个文件设置了suid位后 其他用户在执行这个文件时会拥有文件所有者的权限
注意:1 suid这个权限位 只能设置在二进制文件上(也就是命令) 2 其他用户本身对这个文件有执行权限
sgid s 2 在x位显示 占用所有者的执行位显示 s说明之前所有者有执行权限 S说明之前所有者没有执行权限
当给一个文件设置了guid位后 其他用户在执行这个文件时会拥有文件所有者的权
作用:当给一个文件设置了sgid位后 其他用户在执行这个用户的时候 就拥有了和文件所属组一样的权限 可以设置在文件上或目录上 通常是给目录设置sgid位 sgid位设置在目录位时 在此目录下建立的文件或目录的所属组都会和父级目录的所属组同名
sckity t 1 在x位显示(执行位) 占用所有者的执行位显示 t说明之前所有者有执行权限 T说明之前所有者没有执行权限 当给一个文件设置了sckity位后 其他用户在执行这个文件时会拥有文件所有者的权
作用:防删除 当给一个目录设置了t位后 用户只能在这个目录下删除自己的文件 但root帐号不受t位控制 t位只能设置在目录上
umask -S 查看权限
umask查看文件权限位 如0022 第一个0是特殊权限位 第二个0是没有缺少权限 第三个2表示权限位缺少2即w 第四个2表示权限位缺少2即w
[root@HC ~]# ll -d /tmp/
drwxrwxrwt 14 root root 4096 03-09 13:44 /tmp/
chmod u+s /sbin/shutdown 设置suid的权限位
chmod 4755 /sbin/shutdown 用数字设置
sgid
chmod g+s /sbin/shutdown 设置guid的权限位
chmod 2755 /sbin/shutdown 用数字设置
sckity
chmod o+t /sbin 设置sckity的权限位
16
chmod 1755 /sbin 用数字设置
文件访问控制列表 facl
作用:给不同用户设置不同的访问权限
查看目录的acl权限
getfacl <目录名或文件名>
设置
setfacl -m u:用户名:权限 目录名 给指定的用户,指定的文件夹,指定权限
注意:用户的最终权限是赋予权限与mask权限做逻辑语运算后的权限
acl默认的mask的权限是rwx
修改acl的mask权限的命令
setfacl -m m:r-- /etc
setfacl -m g:用户组名:权限 目录名
删除指定用户的acl
setfacl -x u:用户名 目录名
setfacl -b 目录 删除目录的acl权限
setfacl -m d:u:用户名:权限 目录
设置某一个用户对指定目录下的子文件子目录有固定的权限
setfacl -R -m u:用户组名:权限 目录名
递归设置一个目录的acl权限
第五天
软件包管理
.rpm包的安装与源码包的安装
软件包的查看 安装 卸载
rpm包简介
只要是.rpm结尾的 都可以用红帽包管理器进行管理 通过数据库的形式 记录 安装的软件包的信息
所以 我们能够通过rpm工具安装 查看卸载升级 软件包
17
数据库位置 /var/lib/rpm/目录
修复rpm数据库 #rpm --initdb 或#rpm --rebuliddb
安装包的封包类型
.rpm rpm包(linux默认的) rpm工具管理
.deb deb包 debin系统里的包
. .2 源码包 安装时需要配置和编译才能安装到系统里
提供安装脚本的软件包 解压后会提供一个能执行的安装程序 ./install ./INSTALL ./setup
.bin 直接运行这个包就可以 (X) ./
免安装软件包 解包后就可以运行、使用。
默认安装目录
/etc 配置文件
/usr/bin 可执行命令
/usr/lib 函数库文件
/usr/share/doc 使用手册 说明文件
/usr/share/man 帮助手册
/opt 有些软件也会默认往/opt目录里安装
语法
rpm <选项> [软件名/软件包名] 查看软件包
rpm -qa 查看系统里所有的软件包
rpm -q <软件名> 查看指定的
-q 查看指定的软件包有没有安装(后面跟软件名)
-qa 查看系统下已经安装的所有rpm包
rpm -qa | grep <命令名>
-qi <软件名> 查看已安装的软件的信息(版本 修复时间 描述等等)
rpm -ql <软件名> 查看这个软件包里面的文件都安装到系统的什么目录下了
rpm -qc <软件名> 查看这个软件包里的配置文件都安装到系统的什么目录下了
rpm -qd <软件名> 查看软件的所有说明文件
rpm -qR <软件名> 查看与软件相关的文件
rpm -qf <文件名(绝对路径)> 查看指定文件是由那个软件包提供的
以上是对已安装的软件包的操作
在关盘里查找我需要的包
[root@HC Server]# ls | grep mysql
查看未安装的软件的信息
18
rpm -qpi <软件包名> 查看未安装软件包的信息(这个包干什么用的)
rpm -qpc <软件包名> 查看未安装软件包里配置文件
rpm -qpd <软件包名> 查看未安装软件包的说明文档
rpm -qpl <软件包名> 查看未安装软件包里面的文件(查看包里的内容)
rpm -qpR <软件包名> 查看未安装软件包相关的文件
安装软件包
rpm <选项> <软件包名>
rpm -ivh <软件包名(绝对路径)> i 安装 v 显示安装信息 h
显示安装进程
-nodeps 忽略依赖关系 (不建议)
--replacefiles 覆盖安装
--replacepkgs 重新安装
--force 强制安装
--test 测试安装
--prefix 路径名 指定软件包的安装位置
--noscripts 软件包在安装过程中不执行某些系统指令
解决安装包间的依赖关系
搭建yum源
作用:自动解决安装包的依赖关系
配置文件 cd /etc/.d/
配置文件的名称: 文件名自己定,要已.repo结尾
vim
1 [yum源的名字,可以有多个,但不能重名]
2 name=yum源的描述信息
3 baseurl= file://本地 指定软件仓库的位置
4 enabled=0 以上三行设置不生效 =1 以上三行设置生效
5 gpgcheck=1 启用软件包检测 0 不检测软件包
6 gpgkey=file://本地 软件检测对比的文件路径
yun clean all 清空本地缓存
yum list 查看当前的操作系统安装了那些rpm包
yum grouplist 查看当前的操作系统安装了那些软件包组
yum list | grep httpd
yum search dhcp(软件名) 在yum源软件仓库里搜索指定的软件
用yum安装软件
yum -y install 软件名
19
yum -y groupinstall 软件包组名
用yum卸载
yum -y remove 软件名
yum出现错误的时候(不能用yum解决依赖关系时)
[root@HC .d]# cd /usr/lib/python2.4/site-packages/yum/
[root@HC yum]# vim
remote = url + '/' + relative (把url改成和vim 下的baseurl= file://本地 一样)
改成
remote = “file://本地” + '/' + relative
rpm包 验证
使用/var/lib/rpm/数据库里记录的内容来和目前系统安装的软件进行比对
rpm
-V 软件名 某个软件的文档是否被改动过
-Vf 文件名 查看指定的文件是否被修改过
-Va 文件名 查看所有被修改过的文件
T c /etc/
文件被改动过的内容 文件的类型 文件名
S 文件的大小被改动过
5 md5 验证被修改过
T 文件的最后保存时间被修改过
U 文件的所有者被修改过
G 文件的所属组被修改过
M 文件的属性被修改过
文件的类型
c 后面的文件是配置文件
d 后面的文件是目录
l 后面的文件是链接
软件包的升级
rpm <选项> 软件包名
-Uvh U如果低版本的软件包没有被安装 直接安装当前的软件包
-Fvh F如果低版本的软件包没有安装 当前的软件包无法安装
卸载
rpm <选项> 软件名
20
-e 卸载
--nodeps 忽略依赖关系卸载
--force 强制卸载
安装.
. 是rpm的源码包 好处:可以自己修改rpm包的源码文件
BUILD RPMS SOURCES
SPECS SRPMS
编译过程中产生的 rpm包的说明文档
源码文件 配置文件
不修改源码包的配置
1 rpmbuild --rebuill 只编译打包 不执行安装
rpm -ivh /usr/src/redhat/RPMS/i386/
2 rpmbuild --recompile 编译打包 并执行安装
安装. .2源码包
1 解包解压缩
tar -zxvf -C /usr/src
tar -jxvf -C /usr/src
解压后会在解压目录下生成一个与压缩包同名的目录,这个目录存放的就是它所要的应用文件
2 配置
cd /usr/
./configure --prefix=<目录> 目录不需要提前创建 如果不指定 默认装到/usr/local
配置完成后 会出现一个 makefile文件
(要进入源码包目录里 执行./configure 每个源码包里都会提供一个这样的配置名 我想让这个软件安装完之后有什么样的功能 就在这个目录后面加参数 这个命令可以使用那些参数)
./configure
--help
3 编译(根据上一步产生的makefile文件来编译 产生可运行的程序文件)
make
4 安装
make install
21
3-4和成一步 make && make install 如果步骤3成功了就执行第四步,如果第三步没成功,则第四步,不执行
5 卸载
make uninstall 或 直接删除软件的安装目录 (--prefix=/mysoft) rm
-rf /mysoft
清除安装过程中产生的临时文件
make clean
制作ISO文件
mkisofs -o 文件名
mount //windowsIP/共享的文件夹 /挂载点 -o username=windows帐号
虚拟机与linux共享文件(windows下的虚拟机,网卡桥接,在同一网段)
第六天
进程管理
1 系统的引导过程 和 引导过程中调用的文件 及 文件的作用
第一步 开机加电自检取BIOS里的设置对机箱里的硬件做检测
声卡 显卡 网卡 主板 硬盘 鼠标 键盘 硬件检测成功之后,根据预设的启动项,引导系统,引导的方式有 1光盘引导 2硬盘引导 3网络引导
第二步 当把系统的控制权移交给硬盘后,硬盘读取自己的MBR里的信息,引导系统。(MBR 主引导记录,位置是每块磁盘的第一个扇区,第一扇区512字节446+64+2 )
446字节 放的是引导器程序(grub lilo)
64字节 放磁盘分区表
2字节 MBR结束标志位
备份和恢复MBR
备份 dd if=/dev/sda of=/ bs=512 count=1
破坏 dd if=/dev/zero of=/dev/sda bs=512 count=1 破坏掉第一扇区,系统无法启动了
修复 用光盘引导,进入救援模式
dd if=/ of=dev/sda bs=512 count=1
救援模式 linux rescue
chroot
第三步 加载grub程序(多系统引导器程序 他可以引导多个操作系统)
grub 会提供一个启动菜单供用户选择 根据用户选择的启动项加载相应22
的系统
配置文件 /boot/grub/
/etc/
#boot=/dev/sda
default=0 默认引导那个系统
timeout=5 进入操作系统的等待时间
splashimage=(hd0,6)/grub/ 启动菜单的背景图片
hiddenmenu 隐藏启动菜单
title Red Hat Enterprise Linux Server (5) 指定启动菜单的名称
tile
root (hd0,6) 指定引导分区的位置
kernel /5 ro root=LABEL=/ rhgb quiet 指定系统内核所在的位置 kernel 内核文件名 加载方式 root=根分区 rhgd 彩色显示 quiet安静启动
initrd / 加载内核镜像文件
title Other
rootnoverify (hd0,0)
chainloader +1
内核文件 /boot/5
加密grub
可以加在title的上方或下方
加载title上方时 是设置进入grub的密码 明文密码password 密码 密文password --md5 密文字串
加载title下方时 是设置进入系统的密码 明文密码password 密码
密文password --md5 密文字串
设置密文字串 # grub-md5-crypt, 输入密码两次 得到一个密文字串
第四步 grub加载指定的内核 内核是一个预先编译好的一个二进制程序文件 内核 负责 系统资源调配 和 进程的调度
内核文件 [root@HC boot]# vim /boot/5
第五步 当内核拥有了系统的控制之后 会调用系统里的第一个进程(/sbin/init) init 进程 是linux的第一个进程 是所有进程的父进程 pid 为 1
init的配置文件 /etc/inittab
init级别
0 关机 1 单用户维护模式(只有root登录的模式) 2 多用户字符模式(不能使用NFS) 3 多用户字符模式(支持所有) 4 保留 5 图形多用户模式 6
重启
查看系统的运行级别 # runlevel 显示N 5 N表示上一次没有运行级别
5表示当前运行级别
id: 5 : initdefault :
标识 运行级别 要执行的动作 第三列动作对应执行的程序
23
id:5:initdefault: 指定系统的运行级别
# System initialization.
si::sysinit:/etc/rc.d/t
l0:0:wait:/etc/rc.d/rc 0 执行关机要关闭什么程序.到rc 0里去找
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3 当运行不同级别的时候要运行和开启那些服务
l4:4:wait:/etc/rc.d/rc 4 K是关闭 S是开启
l5:5:wait:/etc/rc.d/rc 5 数值越小,优先级越高
l6:6:wait:/etc/rc.d/rc 6
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now 设置ctrl+alt+del重启
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
# If power was restored before the shutdown kicked in, cancel it.
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3 开启几个终端
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
38,1 97%
# chkconfig --list
查看系统服务在各各级别上的状态
# chkconfig --list | grep httpd
查看指定的系统服务在各各级别上的状态
设置系统服务在各各级别上的状态
[root@HC rc0.d]# chkconfig --level 35 httpd on开机启动
设置httpd在3和5级别上启动就运行
# chkconfig --level 5 httpd off
设置http在5级别上关闭
24
第六步
启用migetty进程
显示登录界面
输入用户密码 进入系统
2 进程的查看 终止 进程的前后台调度
查看 1静态查看 2 动态查看
静态查看 ps aux 参数 a 显示当前终端下的所有进程信息 u
使用以用户为主的格式输出进程信息 x 显示当前用户在所有终端下的进程信息
ps -elf 参数 -e 当前系统内所有进程信息 l 使用长格式显示进程信息 f 使用完整的格式显示进程信息
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT
START TIME COMMAND
root 1 0.0 0.0 2072 632 ? Ss 13:49
0:00 init [5]
pid cpu占用率
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START
TIME COMMAND
root 1 0.0 0.0 2072 612 ? Ss 17:07 0:00 init [5]
root 2 0.0 0.0 0 0 ? S< 17:07 0:00
[migration/0]
root 3 0.0 0.0 0 0 ? SN 17:07 0:00
[ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< 17:07 0:00
[watchdog/0]
root 5 0.0 0.0 0 0 ? S< 17:07 0:00
[migration/1]
root 6 0.0 0.0 0 0 ? SN 17:07 0:01
[ksoftirqd/1]
root 7 0.0 0.0 0 0 ? S< 17:07 0:00
[watchdog/1]
25
root 8 0.0 0.0 0 0 ? S< 17:07 0:00
[events/0]
root 9 0.0 0.0 0 0 ? S< 17:07 0:01
[events/1]
root 10 0.0 0.0 0 0 ? S< 17:07 0:00
[khelper]
root 11 0.0 0.0
[kthread]
root 15 0.0 0.0
[kblockd/0]
root 16 0.0 0.0
[kblockd/1]
root 17 0.0 0.0
[kacpid]
root 125 0.0 0.0
[cqueue/0]
root 126 0.0 0.0
[cqueue/1]
root 129 0.0 0.0
[khubd]
root 131 0.0 0.0
[kseriod]
root 199 0.0 0.0
[khungtaskd]
root 202 0.0 0.0
[kswapd0]
root 203 0.0 0.0
root 204 0.0 0.0
root 360 0.0 0.0
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
0 0 ?
26
S< 17:07 0:00
S< 17:07 0:00
S< 17:07 0:01
S< 17:07 0:00
S< 17:07 0:00
S< 17:07 0:00
S< 17:07 0:00
S< 17:07 0:00
S 17:07 0:00
S< 17:07 0:03
S< 17:07 0:00 [aio/0]
S< 17:07 0:00 [aio/1]
S< 17:07 0:00
[kpsmoused]
root 391 0.0 0.0 0 0 ? S< 17:08 0:00 [ata/0]
root 392 0.0 0.0 0 0 ? S< 17:08 0:00 [ata/1]
root 393 0.0 0.0 0 0 ? S< 17:08 0:00
[ata_aux]
root 397 0.0 0.0 0 0 ?
[scsi_eh_0]
root 398 0.0 0.0 0 0 ?
[scsi_eh_1]
root 405 0.0 0.0 0 0 ?
[kstriped]
root 418 0.1 0.0 0 0 ?
[kjournald]
root 444 0.0 0.0 0 0 ?
[kauditd]
root 477 0.0 0.0 2480 944 ?
/sbin/udevd -d
root 1312 0.0 0.0 0 0 ?
[hd-audio0]
root 1599 0.0 0.0 0 0 ?
[kmpathd/0]
root 1600 0.0 0.0 0 0 ?
[kmpathd/1]
root 1601 0.0 0.0 0 0 ?
[kmpath_handle]
root 1666 0.0 0.0 0 0 ?
[kjournald]
root 2129 0.0 0.0 12520 756 ?
27
S<
S<
S<
D<
S<
S
S<
S<
S<
S<
S<
S 17:08 0:00 17:08 0:00 17:08 0:00 17:08 0:14 17:08 0:00 17:08 0:00 17:08 0:00 17:08 0:00 17:08 0:00 17:08 0:00 17:08 0:00 0:00 auditd root 2131 0.0 0.0 12076 680 ? S /sbin/audispd root 2153 0.0 0.0 1728 572 ? Ss 17:08 0:01 syslogd -m 0 root 2156 0.0 0.0 1680 400 ? Ss 17:08 0:00 klogd -x rpc 2213 0.0 0.0 1816 552 ? portmap root 2239 0.0 0.0 0 0 ? [rpciod/0] root 2240 0.0 0.0 0 0 ? [rpciod/1] root 2248 0.0 0.0 1868 748 ? root 2272 0.0 0.0 5816 644 ? dbus 2287 0.0 0.0 2980 1120 ? dbus-daemon --s root 2302 0.0 0.0 2172 792 ? /usr/sbin/hcid root 2308 0.0 0.0 1748 516 ? /usr/sbin/sdpd root 2480 0.0 0.1 14012 4864 ? python ./hpssd. root 2493 0.0 0.0 7064 1036 ? /usr/sbin/d root 2516 0.0 0.0 2728 848 ? -stayali root 2534 0.0 0.0 9228 1900 ? sendmail: accep 28 Ss 17:08 0:00 S< 17:08 0:00 S< 17:08 0:00 Ss 17:08 0:00 Ss 17:08 0:00 Ss 17:08 0:00 Ss 17:08 0:00 Ss 17:08 0:00 S 17:08 0:00 Ss 17:08 0:00 Ss 17:08 0:00 xinetd Ss 17:08 0:00 smmsp 2542 0.0 0.0 8144 1516 ? Ss 17:08 0:00 sendmail: Queue root 2552 0.0 0.0 1900 472 ? Ss 17:08 0:00 gpm -m /dev/inp root 2561 0.0 0.0 5528 1112 ? Ss 17:08 0:00 crond xfs 2594 0.0 0.1 25504 4364 ? -droppriv - root 2611 0.0 0.0 2268 432 ? /usr/sbin/atd avahi 2641 0.0 0.0 2704 1320 ? avahi-daemon: r avahi 2642 0.0 0.0 2592 420 ? avahi-daemon: c root 2703 0.0 0.0 3508 524 ? /usr/sbin/smart root 2708 0.0 0.0 1664 452 tty1 /sbin/mingetty root 2709 0.0 0.0 1664 452 tty2 /sbin/mingetty root 2710 0.0 0.0 1664 452 tty3 /sbin/mingetty root 2716 0.0 0.0 1664 452 tty4 /sbin/mingetty root 2718 0.0 0.0 1664 448 tty5 /sbin/mingetty root 2720 0.0 0.0 1664 448 tty6 /sbin/mingetty root 2721 0.0 0.0 15904 2988 ? /usr/sbin/gdm-b 29 Ss 17:08 0:00 xfs Ss 17:08 0:00 Ss 17:08 0:01 Ss 17:08 0:00 S 17:08 0:00 Ss+ 17:08 0:00 Ss+ 17:08 0:00 Ss+ 17:08 0:00 Ss+ 17:08 0:00 Ss+ 17:08 0:00 Ss+ 17:08 0:00 Ss 17:08 0:00 root 2776 0.0 0.2 26072 10464 ? SN 17:08 /usr/bin/python root 2778 0.0 0.0 2680 1240 ? SN 17:08 /usr/libexec/ga root 2818 0.0 0.0 16528 2748 ? S 17:08 0:00 0:00 0:00 /usr/sbin/gdm-b root 3040 0.0 gnome-power-man root 3042 0.0 /sbin/pam_times root 3044 0.0 /usr/sbin/nm-sy root 3051 0.0 /usr/libexec/cl root 3053 0.0 /usr/libexec/mi root 3059 0.0 /usr/libexec/ma root 3061 0.0 /usr/lib/scim-1 root 5455 0.0 /usr/bin/vmnet- root 5461 0.0 /usr/bin/vmnet- root 5472 0.0 /usr/sbin/vmwar root 5581 0.0 /usr/lib/vmware root 5818 0.0 0.1 24000 6924 ? 0.0 1868 616 ? 0.0 6284 3196 ? 0.2 49796 12156 ? 0.3 103044 14584 ? 0.0 2480 872 ? 0.0 6420 824 ? 0.0 4332 232 ? 0.0 5148 400 ? 0.0 14848 760 ? 0.8 149880 36696 ? 0.7 140780 30084 ? 30 Ss 17:09 S 17:09 S 17:09 S 17:09 S 17:09 S 17:09 Ss 17:09 Ss 17:38 Ss 17:38 Ss 17:38 Sl 17:38 S 17:38 0:00 0:00 0:00 0:00 0:01 0:00 0:00 0:00 0:00 0:00 0:04 0:02 /usr/lib/vmware root 16139 0.6 1.6 200684 69176 ? Sl 18:51 0:10 /usr/lib/vmware root 16589 58.0 28.1 1439616 1160864 ? Ssl 18:53 13:55 /usr/lib/vmware root 17056 0.0 0.0 4780 1428 pts/1 Ss 19:06 0:00 bash root 17227 0.1 0.0 0 0 ? D 19:15 0:00 [pdflush] root 17229 0.2 0.0 0 0 ? D 19:15 0:00 [pdflush] root 17233 1.0 0.0 4500 948 pts/1 R+ 19:17 0:00 ps aux ps aux | wc -l查看当前运行的进程数 service httpd start 启动 service httpd restart 重启 service httpd status 查看 service httpd reload 重启 service httpd stop 关闭 进程的状态列 S表示这个进程在休眠 有s表示当前这个进程下面有子进程 R进程正在运行 +当前正在运行 T这个进程停止了 Z僵尸进程(进程已经关闭,但是没有关闭) W 内存不够 N低优先级 <高优先级 D不能被打断的 正在执行IO操作的进程 TTY进程属于那个终端 tty 一般为本地终端 pts 为X或者是远程 - 表示系统后台 pts/0 有网络连接主机的进程 ? 此进程与终端无关 PID 进程的编号 PPID 进程父进程的编号 USER 进程的执行者是谁 %CUP 进程占用cpu的比例 %MEM 进程占用物理内存的比例 NI 进程的优先级??????????????????????? 优先级的调整:由19至-20 数字越小 优先级越高 PRI 内核分配给进程的优先级 31 调整优先级 nice 启动的时候就指定优先级 nice --20 service httpd start renice 修改指定pid的进程优先级 实例:renice 优先级-19 进程的PID号 终止进程 kill -l 查看kill可以使用的信号 (常用的编号 -15 终止进程 -9 强制终止进程ctrl+c -19 暂停执行进程=ctrl+z -18 继续执行进程) kill <信号> PID号 killall <信号> 进程名(把所有进程名为xxx的) 一起杀死多个进程 pkill <信号> 进程名称 通过进程名来杀 进程的前后太调度 ctrl+z 把程序暂停 并置入后台 & 让程序在后台运行 fg 编号 把后台的程序调入前台 bg 编号 激活后台运行 jobs 查看后台运行的进程 kill %编号 杀死后台进程 pstree 树状结构显示进程 pgrep 进程名 查找指定的进程pid pgrep -l 进程名 模糊查找 pgrep -u 进程的所有者 pgrep -t 根据进程所在的终端进行查找 top 动态查看进程 第七天 3 计划任务 一次性计划任务 (atd) 执行一次就结束 需要atd服务 service atd status 查看这个服务是否启动了 启动service atd start chkconfig --level 35 atd on 设置开机自启动 chkconfig --list|grep atd atd 0:关闭 1:关闭 2:关闭 3:启用 4:启用 5:启用 6:关闭 root@localhost ~]# chkconfig atd on 32 [root@localhost ~]# chkconfig --list |grep atd atd 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭 设置一次性计划任务 语法 at 时间 at> 输入要执行的任务 结束编写ctrl+d at now at 是命令 now当前 用系统时间给文件或目录命名(`命令`反撇号) touch /`date "+%Y-%m-%d"`.txt at任务时间的表示方式 now 当前 +时间带上单位 示例 2分钟后执行cp命令 [root@HC ~]# at now +2minutes at> cp /etc/passwd /tmp at> job 1 at 2012-03-14 10:29 查看未执行的计划任务 root@HC ~]# atq 1 2012-03-14 10:29 a root 查看计划任务的内容 [root@HC ~]# at -c 2 at -c(参数) 2(编号,用atq查看编号) 计划任务的存储位置 [root@HC at]# cd /var/spool/at/目录下的一个可执行文件,删掉文件等于取消任务。 atrm 编号 也是删除任务 控制用户对计划任务(at)的使用 方法 通过/etc/ /etc/ 1 如果只有存在,则只有设定在文件里的使用者才能使用at 2 如果只有存在,则除了文件里的使用者都可以使用at 3 如果两个文件都存在,则遵循只有的情况。 4 如果两个文件都不存在,则只有root可以使用at 33 只让root用户可以使用at制定任务(1 把和删掉 2 把和改名) 一次性计划任务执行时间,参照系统时间来执行 周期性计划任务 (crond) 循环执行 crontab -e编辑计划任务 -u 用户名 给指定用户编辑cron任务 -l 用户名 查看指定用户的cron任务 -r 用户名 删除指定用户的cron任务 不加用户名就是自己 [root@HC guazai]# crontab -e 执行时间表达方式: 分 时 日 月 星期 5个层次 注意:编写cron任务时命令要写绝对路径 时间数值的特殊表示方法 *代表这列下面的任意一个值 ,表示间隔的多个不连续时间点 -表示连续的时间范围 /指定间隔的时间频率 分两列 执行任务的时间 任务内容 [root@HC cron]# ls /var/spool/cron/ root 任务文件所在 如果命令不能执行,可以写一个脚本,在计划任务里指向脚本。 控制用户使用crontab 方法 /etc/ /etc/ 规则和at的一样 延时性计划任务 anacron [root@HC tmp]# /etc/init.d/anacron status anacron 已停 [root@HC cron]# cat /etc/anacrontab 执行周期 执行时间(开启后的65分钟) 标识名称(/var/spool/anacron) 运行这个目录下的内容 1 65 run-parts /etc/ 34 7 70 run-parts /etc/ 30 75 y run-parts /etc/y 第八天 磁盘管理 分区 格式化 挂载 分区 查看当前系统的磁盘信息 fdisk -l 查看所有的 [root@localhost-wlp ~]# fdisk -l Disk /dev/sda: 500.1 GB, 5 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 650 5116702+ 82 Linux swap / Solaris /dev/sda3 651 60801 483162907+ 83 Linux Disk /dev/sdb: 4004 MB, 4004024320 bytes 32 heads, 63 sectors/track, 3879 cylinders Units = cylinders of 2016 * 512 = 1032192 bytes Device Boot Start End Blocks Id System /dev/sdb1 * 1 3879 3910000+ b W95 FAT32 35 fdisk -l 设备名(/dev) 查看指定磁盘信息 [root@localhost-wlp ~]# fdisk -l /dev/sdb Disk /dev/sdb: 4004 MB, 4004024320 bytes 32 heads, 63 sectors/track, 3879 cylinders Units = cylinders of 2016 * 512 = 1032192 bytes Device Boot Start End Blocks Id System /dev/sdb1 * 1 3879 3910000+ b W95 FAT32 IDE接口 hd [a-d]可以接4块盘[1-63]每块磁盘可以分区数 SCSI接口 sd [a-p]可以解的磁盘数 [1-5]每块磁盘可以分区数 分区编号 一块盘 最多能分4个主分区(1-4)是给主分区和扩展分区用的,编号从5往后是给逻辑分区用的 分区命令 fdisk 磁盘设备名 示例:fdisk /dev/sdb 参数 n添加分区 p创建主分区(没按n之前,是显示分区信息) e创建扩展分区 l创建逻辑分区 d删除分区 t系统分区的ID值 w 保存分区信息并退出 q 不保存分区信息并退出 free -m 查看物理内存和交换分区的使用情况 格式化 mkfs -t ext3 分区名 3 /dev/sdb1 blkid 分区名 查看分区系统类型 文件系统类型 ext2 ext3(rhel5) swap lvm raid ext4(rhel6) mke2fs -j -L “自己设置卷标名” /dev/sdb1 -j 指定系统类型为ext3 -L 指定一个卷标名 e2label /dev/sdb1 查看卷标名 e2label /dev/sdb1 卷标名 设计卷标明 e2label /dev/sdb1 " " 删除卷标名 mkswap 分区名称 把指定分区格式化成交换分区(swap) swapon 分区名称 激活交换分区(把该分区添加到已有的交换分区里) 挂载分区 挂载的方式 36 1 手动挂载 (mount) 2 触发挂载 (autofs) 使用autofs服务来实现 使用时才进行挂在 3 开机自动挂载(/etc/fstab) 注意:要挂载一个分区,必须事先被格式化才能挂载 挂载的时候,一个设备可以被挂载在多个目录下,但不允许多个设备挂载到同一个目录 手动挂载(mount) 格式 mount [选项] 设备名 挂载点 参数 -a 加载/etc/fstab文件内的所有设备 -t 加载是指定文件系统类型 -n 略过写入/etc/mtab文件,默认是写入的 -L 以卷标名的方式加载 -o 在载入时后面可以加上参数 ro/rw 此分区为只读或只写 查看挂载 mount 查看已经挂载的设备 mount 设备名 on 挂载点 type 文件系统类型(挂载方式) mount -L 卷标名 挂载点 通过卷标名挂载 卸载 umount 设备名或挂载点(卸载时必须退出加载目录) fuser -mv 挂载点 查看挂载点谁在用 [root@HC ~]# dumpe2fs /dev/sda7 查看超级块的内容 文件链接 ln [-s] 源文件 连接文件 -s是软链接(符号) 不加-s是硬链接 改任意一个文件,两个文件都发生变化 软链接是链接源文件的存储路径(相当于快捷方式) 硬连接是链接源文件的存储位置(相当于备份,但不是备份) 开机加载设备 vim /etc/fstab LABEL=/ / ext3 defaults 1 1 分区名称 分区加载目录 文件系统类型 加载方式 是否检测1是检测 0是不检测 是否备份1是备份 0是不备份 磁盘配额(quota) 限制用户对磁盘空间的使用量 加载的时候要让这个分区有磁盘配额的功能 37 usrquota 启用用户磁盘限额功能 grpquota 启用用户组的配额功能 加载设备时,启用磁盘配额功能 : mount -o remount,usrquota,grpquota 磁盘名称 remount是重新挂在 系统启动时就启动 /etc/fstab 生成用户和用户组的磁盘配额数据库文件 进入加载目录,生成磁盘配额, quotacheck -avug 生成磁盘配额文件 -a 检测/etc/mtad文件中所有支持配额的设备 -u生成用户的配额文件 -g生成用户组的配额文件 -v 检测的时候显示检测信息 启用配额功能 quotaon开启 quotaoff关闭 quotaon -avug 开启 参数 -a 开启所有支持配额功能的设备 quotaon -vug 磁盘名 开启指定磁盘配额功能 quotaon -vu 磁盘名 开启指定磁盘的配额功能(只开启用户的) 参数 -a 所有支持配额功能的设备 -v显示启动信息 -u 启动用户配额功能 -g 启动用户组配额功能 查看配额信息 quota -u 用户名 参数 -u查看用户的配额信息 -g 查看用户组的配额信息 repquota -avug | grep 用户或用户名 查看用户配额的使用信息 设置用户对启用配额功能分区的使用空间 edquota -u 用户名 edquota -g 用户组 参数 -u编辑用户的配额信息 -g 编辑用户组的配额信息 -p 把用户的配额设置复制给指定用户u1 u2 -t 设置宽限时间 配额文件的格式 分区名称 已经使用的空间(K) 使用空间的软限制 使用空间的硬显示 已使用的innode号的个数 使用innode号的软限制 使用innode号的硬限制 此值是警告值 此值是最大的使用空间值 警告值 最大值 38 测试用户和用户组的配额是否设置成功 磁盘阵列(raid) 让磁盘有存储并对数据备份的功能 (软) 软raid级别 0 1 5 制作软raid设备(能够实现存储和备份数据的功能) raid 0 至少需要2块盘 优点:加快写的速度(如:100M两块盘各存50M)。缺点:一块硬盘坏掉,数据就不完整了。 raid 1 至少需要2块盘 优点:完整备份(100M 两块硬盘各存100,也就是作备份) 缺点:存储速度慢 raid 5 至少需要3块盘(存储容量是(3-1)*最小磁盘) 优点:其中一块硬盘损坏不会影响数据的完整性。 raid 5 创建硬盘 t 修改硬盘ID fd 1 修改分区的ID数值 fdisk /dev/sdb -t-1-fd-w 2 创建raid设备 /dev/md0 命令 mdadm -C raid设备名(如:/dev/md0) -l 级别(5) -n 磁盘个数 -x 热备盘个数 磁盘列表 示例:mdadm -C /dev/md0 -l 5 -n 3 -x 1 /dev/sdb{1,2,3,4} 查看raid信息 cat /proc/mdstat 查看raid设备中的磁盘信息 mdadm -Ds 查看md0的信息 格式化raid设备(/dev/md0) 3 /dev/md0 查看 dlkid /dev/md0 挂载raid设备 mount /dev/md0 /md0 手动创建raid配置文件 mdadm -DS > /etc/ mdadm -DS /dev/md0 | tail -12 raid移除和添加 mdadm -f /dev/md0 /dev/sdb3 标识sdb3已坏 39 mdadm -r /dev/md0 /dev/sdb3 移除sdb3(只有标识已坏才能拿出来) mdadm -a /dev/md0 /dev/sdb3 将sdb3添加进来 umount /md0 卸载 mdadm -f /dev/md0 /dev/sdb3 标识sdb3已坏 mdadm -r /dev/md0 /dev/sdb3 移除sdb3(只有标识已坏才能拿出来) mdadm -S /dev/md0 停用raid(停需要先卸载) fdisk /devsdb-t-1-83-w mkfs -t ext3 /dev/sdb1 删除raid步骤 mdadm -As /dev/md0 启用raid(起需要有/etc/) 逻辑卷 (LVM) 能够动态调整分区的大小 逻辑卷管理器 从逻辑上把多个分区,从逻辑上,正合成一块磁盘(LV)。让这快磁盘具有动态调整空间大小的功能 制作lv的步骤 1 首先要创建物理分区 2 把物理分区做成物理卷(pv) 3 把制作好的pv放到卷组里(vg) 要把物理分区放到卷组里,这个分区首先要被做成pv 4 在已有的vg里创建逻辑卷(lv) 5 格式化lv 6 创建挂在lv的挂载点 7 加载lv,将lv挂载到系统上 lvscan 查看系统里有没有lv 创建分区 修改分区的标识(ID) 修改成8e 创建物理卷(pv) pvcreate /dev/sdb{1,2,3,4} 查看系统有没有物理卷(pv) pvscan 删除pv pvremove 设备名 添加 pvcreate 设备名 把pv放到卷组(vg)里 40 查看 vgscan 创建卷组 语法 vgcreate 卷组名 设备名(可以多个) vgcreate myvg1 /dev/sdb{1,2} vgremove 卷组名 删除卷组 扩展(扩大卷组1) vgextend myvg1 设备名 删除(缩小卷组1) vgreduce myvg1 设备名 创建逻辑卷(lv) lv的容量从vg里来 语法 lvcreate -n lv名字 -L 大小 vg名字 lvcreate -n mylv1 -L 10M myvg1 查看 lvscan 删除lv lvremove lv的名字(包括路径) 增加lv的大小 lvextend -L +大小(M) lv的设备名 减小lv的大小 lvlvextend -L -大小(M) lv的设备名 格式化lv 3 /dev/myvg1/mylv1 挂载 动态调整lv lv收缩 卸载 umount 设备名 强制检测 e2fsck -f 设备名 收缩文件系统 resize2fs 设备名 100M 收缩到100M(相当于更新系统设备大小) 收缩lv lvresize -L 100M 设备名 挂载 查看 df -h /share 动态扩大 lvextend -L +100M 设备名(/dev/) resize2fs -f 设备名 (更新系统设备大小) 触发挂载 41 触发挂载依赖的系统服务(autofs) [root@HC ~]# /etc/init.d/autofs status automount (pid 3234) 正在运行... 设置开机自启动 创建触发挂载的父目录 mkdir /device 创建目录 cd /device/mylv1 用户进入/device/mylv1就触发挂载 编辑autofs服务的主配置文件设置触发挂载 vim /etc/ 挂载设备的父目录 挂载设备使用的配置文件 /device /etc/ 自己配置 vim /etc/ 子目录名 -fstype=文件系统类型 :设备名 mylv1 -fstype=ext3 :/dev/myvg1/mylv1 重启服务让配置生效 service autofs restart 测试 cd /device/mylv1 第十天 服务(DHCP DNS WEB 文件共享服务(ftp smb nfs) iptables (基于本地用户 虚拟用户)) DHCP ip作用(在网络中标识一台主机,并且具有唯一性) 组成 (网络位和主机位,前网络后主机位) 表示方法 (点分十进制) 版本 ipv4地址的总长度是由32位二进制数组成 ipv6地址的总长度是由128位二进制数组成 分类 (5类) A 1-126 默认的子网掩码前8位 后24位是主机位 127.0.0.0 本机环回地址 本机没联网时。测试服务器用的。 B 128-191 默认的子网掩码前16为 主机位是后16位 C 192-223 默认的子网掩码前24为 主机位是后8位 D 224-239 广播地址 默认的子网掩码没有 42 mail E 240-255 广播地址 A 类地址1.0.0.0~126.255.255.255 子网掩码255.0.0.0 127.0.0.0 到127.255.255.255 是保留地址,用做循环测试 B 类地址128.0.0.0~191.255.255.255 子网掩码:255.255.0.0; C 类地址192.0.0.0~223.255.255.255 子网掩码:255.255.255.0; D 类地址224.0.0.0~239.255.255.254 E 类地址240.0.0.0~255.255.255.255 netmask(子网掩码) 组成 连续的1组成 作用 标识一个ip地址 那些是主机位、那些是网络位 如果主机位是0 表示一个网段 如果主机位是全1 表示一个广播地址 网段 192.168.2.24/26 11111111.11111111.11111111.11111111 128 64 32 16 8 4 2 1 11000000.10101000.00000010.00011000 1111000000 只有在同一 使用范围分为 公有ip 私有ip 网络接口名 以太网 标识 eth 光纤 标识 fddi 宽带 标识 ppp gateway(网关) route -n 显示路由表信息 [root@gw ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.10.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 1 0.10.10.254 0.0.0.0 UG 0 0 0 eth0 Destination 路由的目的地 43 Gateway 该路由的网关位置 Genmask 目的地址的掩码 Flags 标记 Metric 路由成本 Ref为参考值,在Linux内核中尚未使用此参数 Use 环回时使用的这条路由次数 Iface 到达目的网络要从哪个网卡出发 route add default gw 192.168.2.161 设置网关 route del default gw 192.168.2.161 删除网关 指定永久需要写到网卡里 网卡的配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-eth1 检测主机是否在线 #ping -c 2 -s 1024 192.168.1.1 (icmp 协议头部8 字节) “Destination Host Unreachable” 表示目的主机不可达 “Network is unreachable” 表示没有设置对应的路由记录(如默认网关地址),无法达到 目标主机所在的网络 “Request timeout” 表示与目标主机间的连接超时(数据包响应缓慢或丢失) 在配置文件里加入一行:GATEWAY= 添加到达指定网段的路由 192.168.5.0/24 192.168.2.254 语法 route add -net <目标地址> gw 通过的出口 在本机设置 然后去目标地址设置 route add -net 192.168.5.0/24 gw 192.168.2.160 route add -net <目标地址> gw 通过的出口 route add -net 192.168.2.160/24 gw 192.168.5.0 del 删除 添加到达指定主机路由 192.168.2.160 192.168.5.250 ip160只能访问5.250 route add -host 目标主机ip地址 gw ip地址 del 删除 添加到达指定主机的路由条目 route add -host 192.168.2.1 gw 192.168.1.254 route del -host 192.168.2.1 gw 192.168.1.254 添加到达指定网段的路由条目 route add -net 192.168.2.0/24 gw 192.168.1.254 route del -net 192.168.2.0/24 gw 192.168.1.254 添加默认路由条目(为主机指定网关) 44 route add default gw 10.10.10.10 route del default gw 10.10.10.10 Vim /etc/sysconfig/network-scripts/ifcfg-eth0 GATEWAY=192.168.1.254 arp 地址解析协议 添加、删除静态ARP解析记录 格式:arp -s IP地址MAC地址 arp -d IP 地址 #traceroute 1.1.1.1 如果发现网络连接有故障,再使用traceroute命令跟踪看是在哪个中间节点中断的 设置主机名 hostname [host_name] /etc/sysconfig/network /etc/hosts 保存主机名与IP 地址的映射记录 DNS vim /etc/ 打开设置DNS配置文件 search 搜索范围 nameserver 指定网关 指定DNS [root@gw ~]# cat /etc/ search # 当解析一个主机名时,自动在此域中搜索主机 nameserver dns 服务器ip 地址# 解析域名的服务器DNS 地址可以三个 vim /etc/hosts 将主机名和ip绑定 hostname(主机名) 修改主机名 hostname 新名 [root@HC ~]# vim /etc/sysconfig/network 永久修改主机名(改配置文件) netstat -utnalp 监听 DHCP服务器的搭建 45 作用 自动给网络中的主机分配入网参数(ip地址 子网掩码 网关 DNS) 工作过程(C/S) 1 客户端请求 2 服务器响应 3 客户机选择 4 服务器确定租约 工作方式(地址租约) 租约分为两种 1 限定租期 (客户端从服务器处获取一个ip地址后,可以使用一段时间,当租期结束时,客户端要续租,达到50%的时候要续租,要提交续租请求,若续租失败,此时客户端仍然可以使用当前ip.当到达87.5%的时候还可以续租一次,如果续租请求成功就继续使用,若失败,马上放弃正在使用的ip地址,重新续租) 2 永久租约 一旦从服务器处,获取到ip地址,这个ip就一直归自己使用,除非自动放弃,要不然不会改变 名词 作用域 分配ip地址的网段 如:192.168.2.0/24 subnet 网段 netmask 掩码 地址池 动态分配给客户端的ip地址的范围 192.168.2.1到192.168.2.254 range 起始ip地址 结束ip地址 排除范围 不会动态分配给客户端的地址 保留地址 把某个ip地址 固定分配给某个主机使用 host ns { } 默认租约 获取ip地址之后,就可以用这么久的时间 如:默认限制6小时 default-lease-time 时间(秒) 最大租约 获取到ip地址后 使用时间达到此值时 必须重新获取ip地址 max-lease-time 时间(秒) 让dhcp服务器能够自动给主机分配192.168.3.0/24网段内的ip地址 子网掩码 255.255.255.0 网关 192.168.3.254 DNS 2.2.2.2 2.2.2.3 把ip地址192.168.3.88 分配给主管用 ip地址1-10,101-120不在动态分配的范围内 46 DHCP服务器的配置 1 dhcp服务器要指定一个固定ip地址 *DHCP服务器的ip地址要和作用域在同一网段 2 安装提供DHCP服务的软件包 setenforce 0 禁用selinux getenforce查看selinux是否关闭 Disabled是关闭的 vim /etc/sysconfig/selinux selinux配置文件 vim /etc/ ddns-update-style interim; dns更新的类型 ignore client-updates; 忽略 subnet 192.168.0.0 netmask 255.255.255.0 { 作用域 # --- default gateway option routers 192.168.0.1; 网关 option subnet-mask 255.255.255.0; 子网掩码 option nis-domain ""; option domain-name ""; option domain-name-servers 192.168.1.1; DNS option time-offset -18000; # Eastern Standard Time range range dynamic-bootp 192.168.0.128 192.168.0.254; default-lease-time 21600; 默认租约(秒) max-lease-time 43200; 最大租约时间 # we want the nameserver to appear at a fixed address host ns { next-server ; hardware ethernet 12:34:56:78:AB:CD; fixed-address 207.175.42.254; dhcp 查看配置文件中的错误 # vim /var/lib/dhcpd/ 租约文件(记录ip地址的分配) dhcp客户端的配置 # vim /etc/sysconfig/network-scripts/ifcfg-eth0 修改获取方式 47 # dhclient 查看获取ip地址的过程 搭建DNS服务器 DNS概述 DNS是一种组织成域 把主机名解析到对应的ip地址 什么是域 域就是从逻辑上把一些计算机划分成一组 FQDN 完全规范域名 主机头名称.主机所在区域.网站类型.这个网站所属的地址 主机头名称www 主机所在区域 网站类型com .com 是商业组织 .org 非盈利组织 .edu 教育组织 .gov 政府机构 .net 网络组织 .mil 军事机构 这个网站所属的地址cn .cn 中国 .jp 日本 de 德国 hk 香港 网址结尾都有一个隐藏的. .代表根域 全世界有13台根域服务器 (美国 德国 日本 棒子) 结尾的点前面的 如 cn 是一级域名(顶极域名) 二级域名 (cn的子域) 三级域名 (.的子域) www主机名 它是 这个子域里面的一台主机 工作工程(查询过程) 查询过程分为 1 递归查询 2 迭代查询 递归查询 dns服务器返回给客户端一个查询结果 1 查询成功 2 查询失败 递归查询是dns客户端与服务器端的查询方式, 返回给客户端一个查询结果 迭代查询 每次给client一个可以查询的地址 , 返回给客户端下一个可查询的地址发生在服务器与服务器 解析的方式有两种 48 正向解析 主机名解析成ip地址 由 正向区域文件记录 反向解析 ip地址解析成主机名 由 反向区域文件记录 主DNS服务器的搭建 DNS服务器的类型 1 主DNS服务器 管理区域 有自己单独的区域文件 负责自己管理区域内的主机名的解析工作 2 从DNS服务器 管理和主DNS服务器一样的区域 当主DNS服务器宕机之后 接替主DNS服务器的解析工作 自己没有区域文件 区域文件是从主DNS上拷贝过来的 3 缓存DNS服务器 每台DNS服务器搭建好之后,就是一台缓存DNS服务器 因为他会把查询到的记录放到自己的缓存里 4 转发DNS服务器 不管理区域 也没有自己的区域文件 把发给自己的解析请求转发指定的DNS去解析 5 根服务器 记录全世界的子域信息 不管那一类DNS服务器 作用都是负责主机名解析(正反向) 搭建主DNS服务器 需求:用ip地址是192.168.3.1 的主机 做主DNS服务器 他能够解析 这个区域内的所有主机名的正反向解析工作 当有人访问 请求发给 192.168.3.2 192.168.3.3 192.168.3.4 搭建步骤 1 关掉 selinux 和 iptables 2 配置固定的ip地址 3 安装提供服务的软件包 49
本文发布于:2024-02-07 17:44:01,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170729904165539.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |