Linux期末考试知识点总结
1. 常用命令
- cd (用于切换当前工作目录至 dirName(目录参数))
cd 目录地址(绝对地址或相对地址)
- ls(列出文件或目录信息)
//列出当前目录下的文件和目录
ls
//列出所有文件包括隐藏的文件
ls -a
//列出当前目录下所有文件的权限、所有者、文件大小、修改时间和名称
ls -l
//列出目录下以及所有子目录的文件名
ls -R
- cp (用于文件或目录的复制)
//语法
cp [参数] 源文件 目标文件
//参数
-a 状态、权限原样复制
-f 如果目标文件或目录存在,先删除再复制,不提示
-i 同上,但要提示
-R 递归复制目录,包括目录下的各级子目录
//复制test文件到当前目录下
cp /home/test .
- history (查询历史命令)
//查询最近使用的n条命令
history n
//将目前正在使用的shell中的所有history命令全部清理
history -c
- mv (文件或目录的移动或命名)
//语法
mv [参数] 源文件或目录 目录文件或目录
//参数
-i 提示是否覆盖
-f 不提示,直接覆盖
//移动test文件到home目录下
mv test /home
- rm (文件或目录的删除)
//语法
rm [参数] 文件名或目录名
//参数
-i 删除文件或目录,提示
-f 不提示
-R 递归删除目录,包括目录下的文件和各级子目录
//删除当前目录下的所有文件
rm *
- touch (建立文件或更新目录)
//参数
-d yyyymmdd 把文件的存取和修改时间改为当前时间
//创建test文件在当前目录下
touch test
//将test文件的存取和修改时间改为2020年1月2日
touch -d 20190102 test
- hostname (修改主机名)
hostname 主机名
su root
//生效执行
- tar (压缩或解压文件)
//压缩
tar -zcvf 压缩包名.tar.gz 源文件
//解压缩
tar -zxvf 压缩包名.tar.gz -C 目录
2. 账号管理
- useradd (创建用户)
useradd 用户名
//参数
-d 指定用户的家目录
-g 指定所属组
- passwd (为用户设置密码)
passwd 用户名
//参数
-l 锁定(停用)用户账号
-u 解锁
- usermod (修改用户的属性)
//参数
-L 锁定
-U 解锁
-u 修改用户的UID
-g 变更所属用户组
//修改test用户的用户名为test1,添加备注信息:testuser
usermod -l test1 -c testuser test
- userdel(删除用户)
//删除用户账户信息
userdel 用户名
//删除用户账户信息,并删除用户主目录及其子目录
user -r 用户名
- /etc/passwd (用户账户文件)
//打开文件
cat /etc/passwd
//passwd文件的每一行用":"分隔为7个域
如:user1:x:1002:1002::/home/user1:/bin/bash
//各域内容:
用户名:加密口令:UID:GID:用户的描述信息:主目录:命令解释器
- /etc/shadow (用户经过加密后的口令)
//shadow文件只对root用户开放,增加安全性
有9个域:
如:user1:!!::17656:0:99999:7:::
用户名:!!(未设置密码):略
3. 组的管理
- groupadd (创建一个新的组)
groupadd 组名
- groupdel (删除一个组)
groupdel 组名
- groupmod (修改一个组)
groupmod [参数] 组名
//参数
-g 修改GID
-n 修改组名
- gpasswd (在附属组中增加、删除用户)
//语法
gpasswd [选项] [用户] [组]
//参数
-a 添加用户到组
-d 把用户从组中删除
-r 取消组的密码
-A 给组指定管理员
//把用户user1加入testgroup组中
gpasswd -a user1 testgroup
4. find查找命令各个选项
//find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
//语法
find [文件目录] [-参数]
//参数
-name 文件名 // 文件名称符合 name 的文件
-iname 文件名 // 忽略大小写
5. wc统计给定文件的字节数,字数,行数
//参数
-c 字节数
-w 字数
-l 行数
//查看/etc/group文件的行数
wc -l /etc/group
或者
cat /etc/group | wc -l
6. 权限管理
- 权限查看
//查看权限使用ll命令
第一组为文件的权限
如:drwxr-xr-x
-rw-r--r--
第1个参数:
d:表示是一个目录
-:表示是一个普通文件
第2,3,4个参数:表示文件所有者的权限
第5,6,7个参数:表示文件所有者所属组成员的权限
第8,9,10个参数:表示文件所有者所属组群以外的权限
r:读取
w:写入
x:执行
-:不具有该项权限
- chomd (使用数字来修改权限)
//语法
chomd 选项数字 文件
//数字:
777:读写执行(所有用户)
775:rwxrwxr-x
666:rw-rw-rw-
664:rw-rw-r--
644:rw-r--r--
- chgrp (变更文件与目录的所属群组)
chgrp 组群 文件或目录
- chown (指定文件的拥有者改为指定的用户或组)
//语法
chown [参数] user[:group] 文件
//参数
-R : 处理指定目录以及其子目录下的所有文件
user : 新的文件拥有者的使用者 ID
group : 新的文件拥有者的使用者组(group)
//如:将目前目录下的所有文件与子目录的拥有者皆设为 test,群体的使用者 testgroup
chown -R test:testgroup *
7. 磁盘管理
- fdisk (磁盘分区工具)
//对磁盘分区,如:
fdisk /dev/sdb
//参数
p:列出磁盘分区表
w:将修改写入磁盘分区表,然后退出
n:创建新分区
d:删除磁盘分区
q:不做保存更改,退出
- 磁盘管理流程
1. 新增一个磁盘,如:添加一个新磁盘/dev/sdb,用fdisk工具给磁盘分区,要求:两个主分区,一个扩展分区,两个逻辑分区。
//使用df -l查看当前磁盘信息
df -l
//用fdisk工具给磁盘分区
fdisk /dev/sdb
//添加主分区
n
p
默认直接回车
+分区大小
//添加扩展分区
n
e
默认回车
+分区大小
//添加逻辑分区
n
l
默认回车
+分区大小
//查看分区结果
p
//保存退出
w
2. 对以上四个分区进行格式化,并挂载,使得系统启动时自动挂载。
//格式化
mkfs.ext3 /dev/sdb1
//如果出错(说分区正在被管理),解决办法
dmsetup status
dmsetup remove_all
//如果说“无法对 /dev/sdb2 进行 stat 调用 --- 没有那个文件或目录"
找不到分区设备的情况下,执行此命令(让内核同步分区信息):
partprobe
//临时挂载
mkdir /mnt/sdb1
mkdir /mnt/sdb2
mkdir /mnt/sdb5
mkdir /mnt/sdb6
mount /dev/sdb1 /mnt/sdb1
mount /dev/sdb2 /mnt/sdb2
mount /dev/sdb5 /mnt/sdb5
mount /dev/sdb6 /mnt/sdb6
//永久挂载
//修改磁盘配置文件 /etc/fstab ,添加如:
/dev/sdb1 /mnt/sdb1 ext3 defaults 0 0
/dev/sdb2 /mnt/sdb2 ext3 defaults 0 0
/dev/sdb5 /mnt/sdb5 ext3 defaults 0 0
/dev/sdb6 /mnt/sdb6 ext3 defaults 0 0
//保存,重启即可
//卸载四个分区,并删除/dev/sdb磁盘中的所有分区。
1. 卸载分区
umount /dev/sdb1
2. 删除配置文件中的配置
3. 删除分区
fdisk /dev/sdb
n
d
1 2 3
8. 逻辑卷管理
//先添加两块硬盘开机
1. 创建物理卷
pvcreate /dev/sdb /dev/sdc
2. 加入卷组
vgcreate storage /dev/sdb /dev/sdc
vgdisplay查看
3. 创建逻辑卷
lvcreate -n storage_mail -L 39G storage
4. 格式化逻辑卷
mkfs.ext3 /dev/storage/storage_mail
5. 临时挂载
mkdir /bobby
mount /dev/storage/storage_mail /bobby
查看挂载状态
df -h
6. 永久挂载
打开配置文件
vim /etc/fastab
写入配置
/dev/storage/storage_mail /bobby ext3 defaults 0 0
7. 扩容逻辑卷
卸载关联
umount /bobby
扩容
lvextend -L 100M(自定) /dev/storage/storage_mail
8. 删除逻辑卷
卸载关联,删除或注释配置
删除逻辑卷
lvremove /dev/storage/storage_mail
删除卷组
vgremove storage
删除物理卷
pvremove /dev/sdb /dev/sdc
9.磁盘配额
对/home分区进行磁盘配额的设置
1)目的和账号:现有帐号分别是 myquota1, myquota2,且这2个用户所属的组都是 myquotagrp。
2) 帐号的磁碟容量限制值:我想让这2个用户都能够取得 600MBytes 的磁碟使用量(hard),文件数量则不予限制。 此外,只要容量使用率超过 550MBytes ,就予以警告 (soft)。
步骤:
1. 创建账号myquota1,myquota2,创建组myquotagrp,把账号加入到组内:
useradd myquota1
useradd myquota2
groupadd myquotagrp
gpasswd -a myquota1 myquotagrp
gpasswd -a myquota2 myquotagrp
查看
grep myquotagrp /etc/group
2. 对组myquotagrp设置磁盘配额
(1)启用文件系统的配额支持
df -h /home
mount -o remount,usrquota,grpquota /home
mount | grep home
卸载/home,重新加载/etc/fstab文件
umount /home
mount -a
(2)创建配额文件
quotacheck -ugcv /dev/sda3
查看
ls -l /home/quota.*
(3)编辑组账号的配额设置
edquota -g myquotagrp
输入
/dev/sda3 0 0 1000000 0 8
(4)开启文件系统磁盘配额功能
quotaon -ugv /home
(5)验证磁盘配额功能
第一步:查看/home目录的权限,设置/home目录权限使得普通用户拥有w权限。
ll /
sudo chomd 777 /home
第二步:登录普通用户myquota1进行验证。
dd if=/dev/zero of=myfile bs=1M count=120
输出:打开myfile失败,超出磁盘限额
10. 计划任务
1. 每周一下午5:50将/data目录下的所有目录和文件归档并压缩为:backup.tar.gz,放在/home/backup目录下。(先新建/data目录,并在目录中随意生成几个文件)。
创建好压缩包后
打开计划任务文件
crontab -e
输入任务:
50 17 * * 1 tar -zcvf /home/backup.tar.gz /data
2. 每天早上7:50自动开启sshd服务,22点50时关闭
50 7 * * * service start sshd
50 22 * * * service stop sshd
3. 每隔5天清空一次FTP服务器公共目录/var/ftp/pub
* * */5 * * /bin/rm -rf /var/ftp/pub/*
4. 每周一、三、五的17:30时,打包备份/etc/httpd目录
30 17 * * 1,3,5 /bin/tar -zcvf /tmp/http
5. 每周日晚上23:55时将“/etc/passwd”文件的内容复制到宿主目录中,保存为pwd.txt文件
55 23 * * 0 /bin/cp /etc/passwd /root/pwd.txt
11. shell编程
1. if,else语句
创建用户脚本
vi sh01.sh
------------
#!/bin/bash
read -p "please input your username(default:user1):" name
if [ "$name" == "" ]
then name = user1 && echo "user1 created successfully."
else
/usr/sbin/useradd "$name" && echo "$name created successfully."
fi
------------
sh sh01.sh
2. while语句
对100以内的所有正整数相加求和
------------
#!/bin/bash
u=0
i=1
while [$i -le 100];do
let u+=$i
let i++
done
echo $u
------------
计算10以内的所有正整数的平方
------------
#!/bin/bash
u=0
i=1
while [$i -le 10];do
let u+=$[$i*$i]
let i++
done
echo $u
------------
3. for语句
9*9乘法表
------------
#!/bin/bash
for ((row=1;row<=9;row++));do
for ((column=1;column<=$row;column++));do
echo -ne "${column}*${row}=$[${column}*${row}] "
done
done
------------
12. rpm包管理
rpm参数
-q 软件包名 查询
-qf 系统文件 查询
安装,查询,卸载,yum安装
查询ls命令属于哪个安装包
rpm -qf /bin/ls
配置yum源(不是很理解,希望不会考)