linux系统的运行级别
级别 | 说明 |
---|---|
0 | 所有系统将终止,关机 |
1 | 单用户模式,用于系统维护,只有少数进程运行 |
2 | 多用户模式,网络文件系统服务没有启动 |
3 | 多用户模式,允许多用户登录,是默认的启动级别 |
4 | 留给用户自定义的级别 |
5 | 多用户模式,桌面模式 |
6 | 所有进程都被终止,系统重新启动 |
当前级别的切换
当前级别的切换: | init +想要切换的级别 |
---|---|
查看默认级别: | systemctl get-default |
设置默认级别: | systemctl set-default + 级别 |
第三级别: | Multi-user.target |
第五级别: | graphical.target |
显示系统信息: | uname -a |
显示cpu架构: | uname -m |
显示内核版本: | uname -r |
主机的查看: | hostname |
永久设置主机名: | hostnamectl set-hostname + 主机名 |
查看ls的使用手册: | man ls |
查看rm使用手册: | man rm |
Info ls | |
Ls --help |
文件目录类的命令
浏览目录的命令 | cd Ls Li |
---|---|
浏览文件的命令 | cat more less |
目录的操作命令 | mkdir rmdir |
文件的操作命令 | touch rm cp mv in find where is what is |
Ls | 列出文件的列表 |
LR | 递归 |
-a | 全部的文件,连同隐藏文件一起列出,包括以.开头的文件 |
---|---|
-A | 全部的文件,连同隐藏文件,但是不包括.和…文件 |
. | 当前工作路径 |
… | 当前工作路径的上一层 |
-d | 仅列出目录本身的属性 |
-h | 将文件的大小以kb,Mb等易读的方式列出 |
-i | 列出inde 号码 |
-L | 长列表格式列出目录内容,包含文件的属性与权限等数据 |
-R | 递归,连同子目录里的文件一起列出 |
-Ls -Ld | **** |
-Ls -Lh | **** |
-Ls -Li | |
cd | 切换目录 |
创建目录、删除目录、复制以及移动
-
创建目录 mkdir
- 格式: mkdir 【选项】<目录名>
- 建立主目录dir1和子目录dir2 mkdir -p dir1/dir2 -p:先建立父目录后子目录
-
删除空目录 rmdir
- 删除空目录dir rmdir dir
- 删除非空目录dir rm -rf dir
-
删除文件或目录 rm rm 是rm -i 的别名
-
格式: rm [选项] <目标文件路径>
-
删除一个文件 : rm myfiles
-
删除当前目录下所有文件: *rm ** *** **是通配符
-
-f 强制删除文件,没有提问 ,强制删除后缀为.txt 的文件 : *rm -f .txt
-
强制删除dir2目录: rm -rf dir2
-
复制文件 cp
- 格式 cp [选项] <源文件路径> <目标文件路径>
- 将test1.txt复制成test2.txt cp test.txt test1.txt
- 将test3.txt复制到 /tmp目录中 cp text3.txt /tmp
- 复制目录需要加递归 -r cp -r dir1 /tmp
-
移动文件 move
- 格式: mv [选项] <源文件路径> <目标文件路径>
- 将test1.txt移动至dir1下并改名为test2.txt : mv test1.txt dir1/test2.txt
- 将test3.txt移动到/tmp 目录中 : mv test3.txt /tmp
- 移动目录dir1到/tmp目录中 : mv dir1 /tmp
- mv具备重命名的功能,将test1.txt改名为test2.txt: mv test1.txt test2.txt
-
touch 命令
- 创建一个空文件或修改文件的存取/修改时间
- 格式: touch [选项]<文件名>
- 创建一个abc空文件 : touch abc
- 将test文件的最近一次修改内容的日期改为 2010 0210: touch -d 20100210 test
查看文件内容的cat命令,以及其他
- cat 命令:用于显示文件内容,也可以将数个文件合并成一个文件
- 格式: cat [选项]<文件名>
- 显示test.txt内容: cat test.txt
- 带行号显示test.txt文件的内容: cat -n test.txt
- 将test.txt的内容追加到test1.txt文件之后 : cat test.txt >> test1.txt
- 将test.txt和test1.txt文件合并成readme.txt文件: cat test.txt test1.txt >readme.txt
- 显示 test.txt文件中所有的字符: cat -A test.txt
- 格式: cat [选项]<文件名>
- more 命令:
- more命令一般用于显示内容超过一个页面长度的情况,分页查看文件内容
- 显示 /etc/named.conf 文本文件的内容: more /etc/named.conf
- 回车键按行查看,空格按页查看,q退出
- more命令一般用于显示内容超过一个页面长度的情况,分页查看文件内容
- less命令:
- less命令与more相似,不同的是他可以按空格向下查看还可以上下键来回滚动文件,结束浏览时q键即可,可输入“/查找字符串”查找相应的内容,n下一个,N上一个
- 显示指定的文本内容: less named.conf
- -N带行号显示: less -N named.conf
- less命令与more相似,不同的是他可以按空格向下查看还可以上下键来回滚动文件,结束浏览时q键即可,可输入“/查找字符串”查找相应的内容,n下一个,N上一个
- ln 命令:
- 在文件和目录之间建立链接(快捷方式)
- 格式: ln [选项] <源文件或目录><链接文件名>
- 软链接:又称符号链接,指向文件名,在通过文件名间接指向磁盘存储空间,读取数据。若删除源文件,则链接文件失效。
- 创建一个 链接文件doc,指向目录 /usr/share/doc : ln -s /usr/share/doc doc
- 硬链接:直指源文件磁盘存储空间,相当于一块空间有两个文件名相对应。若删除源文件,链接文件依然有效,但是不能链接目录,跨文件使用
- 创建一个硬链接文件hard,指向目录 /usr/share/test: ln /usr/share/test hard
- 在文件和目录之间建立链接(快捷方式)
- find命令:
- 用来寻找文件或目录
- 格式: find <路径> [匹配条件]
- 搜索系统根目录下名为httpd.conf 的文件: find / -name httpd.conf
- 搜索/etc 目录下名为 httpd.conf的文件并显示结果 : find /etc -name httpd.conf
- 搜索拥有着为xx的文件: find / -user xx
- 搜索目录下大小大于xx的文件: find / -size + xx
- 搜索目录下大小小于xx的文件: find / -size - xx
- 查找属于组的文件使用 -group name: find / -group xx
- 搜索/etc目录下普通文件并显示结果,常用类型有d,p,s : find /etc -type f
- 搜索/etc 目录下大小大于100k的普通文件,同时要求拥有者为lisi : find /etc -type f -size +100k -user lisi
- whereis 命令,常用于程序名的搜索,而且只搜索二进制文件(参数 -b),man说明文件参数(-m)和源代码文件(参数**-s**)如果省略则返回所有信息
- 查找二进制可执行程序ls: whereis -b ls
- 查找ls帮助文档 : whereis -m ls
- 查找关键字为ls的所有信息: whereis ls
- whatis 命令用于查询一个命令执行什么功能
- 查找二进制可执行程序ls所展现的功能: whatis ls
- 查找man的功能信息: whatis man
- 查看历史命令,可查看**.bash_history**文件,记录当前用户操作过的命令,在用户家目录下才能看到
- history 查看最近使用的命令
- history 10 查看最近使用的10条命令
- head -2 <文件名> 显示文件前两行的内容,默认为前10行,与tail对立
- 查询命令的绝对路径: which [命令名称]
文档的查看head、tail:
head -n 3 f1 | 显示文件前三行 |
---|---|
head -n -3 f1 | 不显示最后三行 |
tail -n 3 f1 | 显示文件最后三行 |
tail -n +3 f1 | 从第三行开始显示到最后 |
tail -f /var/log/message | 跟踪日志文件的变化 |
-
示例:
使用cat将uie文档带行号列出来,然后交给head命令显示文档前三行 [root@localhost~]# cat -n uie | head -n 3
文本过滤器 grep:
-
功能: 将半含关键字的行显示出来
-
grep -c “test” f1 匹配f1文件中包含test的关键字的行数 grep -i “test” f1 匹配f1文件中的关键字"test",.忽略大小写 grep -n “test” f1 匹配f1文件中关键字为“test”并显示行号 grep -ri “test” /etc 查找etc目录下包含test关键字的文件
-
cut命令
-
cat 命令:截取指定列
-
格式: cut -d “分隔符” -f “列号”
-
- 将/etc/passed拷贝到当前目录
[root@localhost~]# cp/etc/passwd/root/
-
-
以 “:” 作为分隔符,截取passed文件中的第2列
[root@localhost~]# cut -d ":" -f2 passwd
-
-
-
以“:”作为分隔符,截取passwd文件中第 1/2列
[root@localhost~]# cut -d ":" -f1,2 passwd
-
-
-
以“:”作为分隔符,截取passwd文件中第1到5列
[root@localhost~]# cut -d ":" -f1-5 passwd
-
-
-
文本排序命令 --sort
-
sort 功能:默认以ASCII方式进行排序([a-z])
-
选项:
-u 去除重复的行,重复的行显示为一行 -r 降序排序[z-a] -n 按照数值的大小排序 -t 设定分界符 -k 已制定的列进行排序 -
示例:
sort /etc/passwd 对/etc/passwd文件升序排序 sort -r/etc/passwd 对/etc/passwd文件降序排序 sort -n -t : -k3 /etc/passed 依据/etc/passwd第三列数值排序,分隔符为“:” sort -u test.txt 对test.txt文件去重显示并升序排序
-
字符管理命令 -uniq
-
功能:对文件进行去重显示操作
-
uniq test3 重复的行只显示一行 uniq -c test3 对重复的行显示行数 uniq -ic test3 统计时忽略大小写
输出重定向
-
<< 追加 < 覆盖 cat -d : -f1,3passwd >> f12 将passwd中的1,3列剪切追加到f12中 cut -d : f1,3 passwd > f12 覆盖
tee 与 管道命令 |
-
将cut命令执行结果交给tee,tee将参数分为两份,分别放入f12中后展示给我们
[root@localhost~]#cut -d : -f1,3 passwd | tee f12
字符管理命令 -wc
-
功能:统计文件的行数,字符数
-
选项:
-l 统计字数 -c 统计字节数 -w 统计单词数 -
示例1:统计/etc/passwd文件行数
[root@localhost~]# wc -l /etc/passwd
-
示例2:统计etc/passwd文件行数和字节数
[root@localhost~]# wc -Ls /etc/passwd
-
示例3:统计/etc/passwd 与/etc/fstab各文件的行、字、字节数
[root@localhost~]# wc -lws /ect/passed /etc/fstab
-
-
du: 硬盘的使用情况
- du -sh [目录]
linux 目录结构,以及/目录下功能划分
/ | 根目录 |
---|---|
bin | 二进制,存放公共的linux命令 |
sbin | 存放系统管理命令 |
root | 超级用户的家目录 |
home | 普通用户的家目录 |
boot | 存放系统启动时需要的程序,系统的启动文件和内核 |
dev | 存放设备文件 |
usr | 程序安装处 |
etc | 存放系统各种配置文件 |
var | 存放系统常变数据 |
/目录下功能划分 | |
/boot | linux引导程序放置的目录 |
/etc | 配置文件放置的目录 |
/usr | 帮助文档,系统命令进程放置的目录 |
/mnt | 挂载所用的目录 |
/tmp | 临时文件放置的目录 |
/dev | 存放设备相关文件的目录 |
/var | 系统运行时变化数据的目录 |
/home | 用户家目录默认位置 |
颜色划分 | |
白色 | 二进制文件 普通文档 |
蓝色 | 目录 |
绿色 | 可执行程序 |
青色 | 软链接 |
红色 | 包文件、压缩文件 |
黄色 | 块设备文件 |
绝对路径 | 从根目录下(/)开始表示文件或目录所在的位置 |
相对路径 | 以当前路径为基点,表示文件或目录的的位置 |
linux的权限管理
- 查看文件权限:ls -l ,显示结果共六项信息:
最左侧10个字符 | 表示权限信息 |
---|---|
第二项数字 | 表示硬链接数 |
第三项数字 | 该文件的所属信息,属主和属组 |
第四项数字 | 表示文件的大小,单位:字节 |
第五项时间 | 表示上一次内容被修改的时间 |
第六项 | 表示文件名、目录名 |
属主 | 文件/目录的所有者(u) |
属组 | 文件/目录的所属组(g) |
其他人 | 即非属主,也非属组(o) |
所有人 | 属主、属组和其他人(a) |
- 最左侧10个字符的含义:
- | rwx | rw- | rwx |
---|---|---|---|
文件类型 | 属主权限(u) | 属组权限(g) | 其他用户权限(o) |
三种用户类型(u/g/o)统一用a表示 |
---|
-
文件类型:
- -代表普通文件,即
- d:目录
- l:软链接
- b:快设备(硬盘,u盘,光驱)
- c:字符设备
- -代表普通文件,即
-
linux权限分析
权限 | 说明 | 对应数值 | 说明 |
---|---|---|---|
r | 读权限 | 4 | 赋予目录/文件可读权限 |
w | 写权限 | 2 | 赋予目录/文件可写权限 |
x | 执行权限 | 1 | 赋予目录/文件可执行权限 |
- | 无权限 | 0 | 取消相关权限 |
-
chmod(change mode)命令:
- 功能:改变文件/目录的权限
- 格式:chmod [选项] 权限 <目标>
- 选项:
- -R : 递归改变目标权限
- -v:改变权限时显示详细过程
- -f: 忽略在修改文件时的错误信息
-
操作运算符:
- + 增加某个权限
- - 去除某个权限
- = 只拥有某个权限
- 示例:
- 文件拥有者(所属u)增加执行权限,文件名称为f1: chmod u+x f1
- 文件拥有者增加执行权限,所属组增加写权限,文件名称为f1 : chmod u+x , g+w , o-r f1
- 文件所有权限都统一为可读可执行 : chomd a=rx f1
-
是用数字表示权限
rw- | r-x | r– |
---|---|---|
属主权限(u) | 属组权限(g) | 其他用户(o) |
420 | 401 | 400 |
6 | 5 | 4 |
-
也可以吧rwx三个权限,当做3bit的二进制处理,有该权限的用1,没有的用0,再把3bit转为十进制
- 如:
- r-x => 101 => 4 - 1 =5
- rw- => 110=>4 2 - =6
- rw- r- - r- - 的权限为 644
- 使用chmod修改:
- chmod 644 f1
- 如:
-
更改所属信息的命令: **chown ** 若是只想修改属组保留属主,需要将 : 保留
- 功能:改变文件/目录的属主和属组
- 格式:chown [选项] [属主:属组] <目标>
- 选项:
- -R : 递归
- -v : 执行时显示详细信息
- 例:
- 改变text.txt属主改为test用户: chown test test.txt
- 改变test.txt 属组为test组: chown : test test.txt
- 改变files目录及其子目录,所有的文件属组为user1,属组为test,并显示详细信息:
- chown -Rv user1:test files
-
用户权限管理 -chgrp (change group)
- 功能:改变文件或目录的数组
- 格式:chgrp [选项] [属组] <目标>
- 选项:
- -R : 递归
- -v : 执行时显示详细信息
- 如:
- 更改files的数组为test: chgrp test files
用户的权限管理 - ACL
-
ACL (access control list)用于对不同的用户分配不同的权限,因为linux的chmod只能分配三个角色
-
ACL的种类:
- 存取ACL(access ACL),针对文件或目录设置访问控制列表,用来设置对文件的读写和操作权限
- 默认ACL(default ACL),只针对目录设置,如果子目录没有设置ACL将会自动集成默认的ACL
-
命令: getfacl
- 功能:查看文件或目录的ACl权限
- 格式: getfacl [选项] <目标>
- 示例:
- 查看本地文件test.txt的访问控制列表 : getfacl test.txt
-
命令: setfacl
- 功能:修改文件或目录的ACL权限
- 格式: setfacl [选项] <目标>
- 常用选项: (mask)为最大有效权限
-m | 设置文件的ACL规则 |
---|---|
-x | 删除文件的ACl规则 |
-b | 删除ACL规则 |
-k | 删除缺省的ACl规则,如果没有则不显示 |
-d | 设置默认的ACL规则 |
-R | 递归 |
-
示例:
- 让test对test.txt拥有rw权限: setfacl -m u:test:rw test.txt
- 让blue组对test.txt拥有rw权限: setfacl -m g:blue:rw test.txt
- 对files目录及其子目录增加账户test的rwx权限: setfacl -R -m u:test:rwx files
-
设置默认的ACL
-
对files目录设置默认的ACL。未来新建的子目录与文件将会自动继承files目录的ACL
- setfacl -m d:u:user1:rw files
-
在files目录下创建子目录
mkdir subdir files getfacl
-
-
删除选项
- 去掉test对test.txt 的ACL权限 : setfacl -x u:test test.txt
- 去掉所有的test.txt中的ACL权限: setfacl -b test.tst
-
Lsattr 命令:
- 功能:显示文件/目录的隐藏权限
- 格式: lsattr [选项] <目标>
- 选项:
- -a : 显示指定目录下所有文件及目录的隐藏属性
- -R : 递归
- 示例:
- 查看 /root下文件及目录的隐藏权限: lsttr -aR /root
-
chattr 命令:
- 功能: 更改文件/目录的隐藏属性
- 格式: chattr <选项> <隐藏属性> <目标>
-R | 递归 |
---|---|
-v | 执行时显示详细信息 |
+ | 增加某个属性 |
- | 去除某个属性 |
= | 只拥有某个属性 |
常用的文本属性(隐藏的) | |
i | 只读属性,只能读取,不能修改或删除 |
a | 可追加数据,但无法修改,删除,重命名 |
- 示例:
- 将文件test.txt增加i属性: chattr +i test.txt
配置文件
- 用户账号文件: /etc/passwd
- 用于保存用户的账号基本信息
- 文件位置: /ect/passwd
[root@localhost~]# tail -2 /etc/passwd
test:x:86:86:test user::/bin/nologin
test1:x:500:500:test student user:/home/test:/bin/bash
账号名称 | 在系统里是唯一的 |
---|---|
用户密码 | 此字段存放加密口令(x代表,不用了) |
用户标识码(user id) | 系统内部用它标识用户 |
组标识码(group id) | 系统内不用标识用户所属的组 |
用户相关信息 | 例如用户全名等 |
用户家目录 | 用户登录后进入的目录 |
用户shell | 用户使用的shell,有/bin/bash ,/sbin/nologin(不允许通过本地登录) |
[root@localhost~]# tail -2 /etc/passwd
test1:x:500:500:test student user:/home/test:/bin/bash
- 注释:一 : 为分隔符,可分为七个部分
text1 | 账号名称 |
---|---|
x | 用户密码占位符(不用了) |
500 | 用户的标识码(uid) |
500 | 用户所属的原始用户组标识码(gid) |
test student user | 用户账号的一个说明 |
home/test | 所对应的家目录 |
/bin/bsah | 用户使用的shell |
- 用户账号文件: /etc/shadow
- 用于保存密码字串,密码有效信息等
- 文件位置: /etc/shadow
[root@localhost~]#tail -2 /etc/shadow
xfs:!!:14347:0:99999:7:::
teacherabc:$1$BT7tea:14374:0:99999:7:::
用户名 | 用户登录时使用的名字 |
---|---|
密码 | 存放密码的口令 |
最后一次修改密码时间 | 最近修改密码的日期距离1970年元旦的天数 |
密码不可被修改的天数 | 密码多少天不能修改 |
密码需要修改的天数 | 需要多久再次变更密码 |
警告时间 | 密码过期前几天发出警告 |
密码过期后的账号宽限时间 | 口令过期后该账号能用多久 |
账号失效时间 | 到期后账号不可用 |
标志 | 未使用 |
- 示例:
teacherabc:$1$BT7tea:14374:0:99999:7:::
teacherabc | 用户名 |
---|---|
1 1 1BT7tea | 密码加密口令(不可逆) |
14374 | 最近修改密码距1970年元旦的天数 |
0 | 密码多少天内不能更改 |
99999 | 密码的有效期 |
7 | 密码失效前7天警告 |
关于用户账号的操作
增加用户
- 添加用户账户 -------- useradd
- 格式: useradd [选项]…用户名…
- 常用命令选项:
-u | 指定UID标记号 |
---|---|
-d | 指定家目录,缺省为/home/用户名 |
-e | 指定账号失效时间 |
-g | 指定用户的原始组名(GID) |
-G | 指定用户的次要组名(或GID号) |
-M | 不为用户建立家目录(程序用户) |
-S | 指定用户的登录的shell |
创建一个程序账号,ID(uid与gid小于1000) |
-
示例:
-
指定的Lisi的uid为1500,原始用户组为root,指定家目录为/mnt1
-
[root@localhost~]# useradd -u 1500 -g root -d/mnt1 Lisi
-
-
创建mike 用户 ,并加入到zhangsan 组,不允许mike 通过本地登录
-
[root@localhost~]#useradd -G zhangsan -s /sbin/nologin mike
-
-
创建一个程序账号named1不创建家目录,指定shell为sbin/nologin
-
useradd -M -r -S /sbin/nologin named1
-
-
对应的用户原始组、次要组必须存在
-
-
用户账号的初始配置文件
- 文件来源:新建用户账号时,用户的家目录会有一系列文件产生,是从/etc/skel目录中复制而来
- 主要的用户初始配置文件:
/.bash_profile | 每次用户登录时执行 |
---|---|
/.bashrc | 每次进入新的bashrc执行 |
/.bash_logout | 用户每次退出登录时执行 |
更改用户密码
-
设置、更改用户的密码 ----passwd
-
格式:passsd [选项] <用户名>
-
另一种方法改变密码:将123456设置为lisi的密码
-
echo "123456" | passwd -- stdin lisi
- 与用户账号文件相似
- -etc/group : 保存组账号基本信息
- -etc/gshadow : 保存组账号的密码信息
-
常用命令选项:
-
-
-d | 清空用户密码,使之无需密码就能登录,只针对root生效 |
---|---|
-l | 锁定用户账号 |
-s | 查看用户账号状态(是否被锁定) |
-w | 解锁用户账户 |
-
用vim可以直接更改用户参数 例如:
[root@localhost~]#vim /etc/shadow
修改用户账号属性
-
修改用户账号属性--------usermod
-
格式: usermod [选项] <用户名>
-
例:将wufei 改成eagle用户名
-
[root@localhost~]#usermod -l eagle wufei
-
常用选项:
-
-
-l | 更改用户账号的登录名称 |
---|---|
-L | 锁定用户账户 |
-U | 解锁用户账号 |
-u | 指定UID标记号 |
---|---|
-d | 指定家目录,缺省为/home/用户名 |
-e | 指定账号失效时间 |
-g | 指定用户的原始组名(GID) |
-G | 指定用户的次要组名(或GID号) |
-M | 不为用户建立家目录(程序用户) |
-S | 指定用户的登录的shell |
删除用户账号
-
删除用户账号-----userdel
- 格式: userdel [r] <用户名>
- 添加-r选项时,表示连用户的主目录一起删除
-
/etc/group 格式:
字段 | 含义 |
---|---|
组名 | 用户登录时所在的组 |
组口令(密码) | 一般不使用(x) |
GID | 组标识号 |
组内用户列表 | 属于该组的所有用户名表 |
添加组账号
-
添加组账号------------ groupadd命令
- 格式: groupadd [-g GID] <组账号名>
-
添加、删除组成员------gpasswd
-
用途:设置组账号密码(极少用),添加、删除组成员
-
格式:gpasswd [选项] <组账号名>
-
常用命令选项:
-
-a (add) 向组内添加一个用户 -d (delet) 从组内删除一个用户成员 -M 定义组成员列表,用户以逗号分隔
-
-
示例:
将zhangsan用户添加至ujiuye组账号中 [root@localhost~]# gpasswd -a zhangsan ujiuye
-
将zhangsan 从/etc/group中过滤出来 [root@localhost~]# grep "zhangsan" /etc/group
删除组账号
-
-
删除组账号----- groupdel
- 格式: groupdel [组账号名]
查询账号信息
-
Id命令:
- 用途: 查询用户身份标识
- 格式: id(用户名)
-
groups 命令:
- 用途:查询用户所属的组
- 格式:groups [用户名]
-
查询账号信息
-
users 、w、who 命令
-
用途: 查询已登陆的主机的用户信息
-
用户的切换:
-
.su 切换当前登录用户(switch) -su 用户名 切换用户时不改变shell环境变量 -su- 用户名 切换用户时使用该用户的shell环境 -su 不加用户名的时候表示切换至root用户 exit 退出当前用户登录 - root用户切换至普通用户无需对方密码,普通用户切换至其他用户需要对方密码
-
-
sodo:允许普通用户以root身份执行命令,需要root配置生效,输入本人密码即可
-
编辑sudo配置文件:
-
vi sudo 或 vim /etc/sudoers
-
格式:用户 主机名=(root) 命令的绝对路径
-
解释:授权指定用户从指定主机远程登录到本机上以root身份方式运行
-
例子:
[root@localhost~]# -user1 ACL=(root) /usr/bin/mount, /use/bin/umount [root@localhost~]# -user2 ACL=(root)ACL [root@localhost~]# -user3 ACL=(ACL)NoPASSWD:ACL
- 命令的绝对路径可以用which查询到
-
-
linux应用程序基础
-
应用程序与系统命令关系
-
文件位置:
- 系统命令:一般在 /bin 和 /sbin 目录中,或为shell
- 内部指令:通常在/use/bin 和/sur/sbin 目录中
-
主要用途:
- 系统命令:完成对系统的基本管理工作,例如ip配置工具
- 应用程序:完成相对独立的其他辅助任务,例如网页浏览器
-
适用环境:
- 系统命令:一般只在字符操作界面中运行
- 应用程序:根据实际需要,有些程序可在图形界面中运行
-
运行格式:
- 系统命令:一般包括命令字,命令选项和命令参数
- 应用程序:通常没有固定的执行格式
-
应用程序的目录结构:
-
保存目录 保存目录 /use/bin 普通执行文件 /usr/sbin 服务期执行程序和管理程序文件 /var/log 日志文件 /usr/share/doc 应用程序文档文件 /usr/share/man 应用程序手册页文件 /etc 应用程序配置文件
-
软件包封装类型
封装类型 | 说明 |
---|---|
rpm软件包 | 扩展名为“.rpm” |
deb软件包 | 扩展名为".deb" |
源代码软件包 | 扩展名为".tar.gz" “tar.bz2” "tar.xz"等格式的压缩包包含程序的原始代码 |
- 附带安装程序的软件包: 在压缩包内提供的 install.sh 、 set up等安装程序或以".bin"格式的单个执行文件
- 绿色免安装的软件包 : 在压缩包内提供已编译好的执行程序文件,解开压缩包后的文件即可直接使用
- 软件安装的三种方式:
- rpm 命令安装
- yum 源安装
- 源码包安装
rpm安装
-
RPM:
-
格式: bash-4.2.46-31.el7.x86_64.rpm(软件包名称bash,版本号4.2.46,发布次数 31、发行版本el7、硬件平台x86_64、扩展名.rpm)
-
rpm 文件获取方法:
-
挂在系统安装光盘
-
RPM文件获取方法
-
mkdir /mnt/cdrom 建立cdrom mount /dev/cdrom /mnt/cdrom 把/dev/cdrom挂载到 /mnt/cdrom cd /mnt/cdrom/packages 进入安装包存放路径 卸载光盘 : umount /mnt/cdrom
- 挂载:把某一个设备连接到目录里,通过访问目录来访问相应的设备
- Ls | wc -l : 查询有多少个安装包 wc -l 统计个数
-
-
-
-
软件包管理 -RPM
-
命令: rpm
-
功能:安装后缀为 .rpm 的软件
-
格式: rpm <选项> <软件包全名>
-
选项:
-i 安装软件包 -v 安装时显示安装信息 -h 以 # 作为进度条显示安装进度 -e 删除软件包 -U 升级软件包,如果升级软件的包没有安装则会安装 -F 升级软件包,如果升级的软件包没有安装,则放弃任务 –nodeps 忽略软件包的关联包 –force 强制安装,忽略错误/提示等信息 -q 查询选项(有许多自选项) -qa 查询所有已安装的软件包 -qf 查询某个文件或目录下由那个软件包安装产生的 -ql 查询某个软件包的安装文件列表
-
-
软件包的安装
-
使用rpm命令的安装模式可以将软件包内所有的组件放到系统的正确路径
-
安装软件包命令:
[root@localhost~]# rpm -ivh zsh -5.0.2-31.el7.x86_64.rpm -ivh : 安装时显示安装信息和进度 zsh : 一种shell
-
-
-
软件包的删除
-
删除模式会将指定软件包的内容全部删除,但并不包括已经更改过的配置文件
-
删除rpm软件包的命令:
[root@localhost~]#rpm -e zsh
-
-
软件包的升级
-
安装用户所指定的更新版本,并删除已经安装在系统中的相同软件包
-
[root@localhost~]# rpm -Uvh zsh -5.0.2-31.el7.x86_64.rpm
-
-
软件包查询
-
若要获取rpm软件包相关信息,可以使用查询模式。使用 -q参数可查询一个已经安装的软件包内容
-
[root@localhost~]# rpm -q zsh
-
-
命令会显示软件包名称,版本号和次版本号
-
[root@localhost~]# rpm -qa | grep [软件名] 将软件从rpm里过滤出来
-
-
-
查询软件包所安装的文件
-
安装软件包之后软件安装列表可查询
-
[root@localhost~]# rpm -ql package-name
-
如:
[root@localhost~]# rpm -ql zsh -l : 显示文件列表 [root@localhost~]# rpm -ql zsh | less 以页面(less)的形式展示出zsh的文件
-
实验操作:
-
查看当前系统已安装的软件: [root@localhost~]# rpm -qa 将系统安装的软件数目显示: [root@localhost~]# rpm -qa | wc -l 查看系统中是否安装了某个软件包:[root@localhost~]# rpm -qa | grep mail 查看/etc/passwd文件属于哪个软件 :[root@localhost~]# rpm -qf /etc/passwd 通过网络下载软件包安装 :[root@localhost~]# rpm -ivh +网址 http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/elepel-release-7-12.noarch.rpm
-
-
-
-
重建RPM数据库
-
[root@localhost~]# rpm --rebuilddb [root@localhost~]# rpm --initdb
-
安装有依赖关系的多个软件时,被依赖的软件包需先安装,同时制定多个.rpm包文件进行安装
-
写在有依赖关系的多个软件时,依赖其它程序的软件包需要先卸载,同时指定多个软件名进行卸载
-
vim -enhanced 依赖于 vim -common
-
-
yum 命令安装
-
yum 命令形式: yum [options选项] [command子命令] [package…]
-
选项: -y 不用再确认直接安装
-
安装: 安装指定的安装包 package1
-
[root@localhost~]#yum -y install zsh
-
-
安装程序组 group1
-
yum grouplist 列表软件组 yum groupinstall 智能卡支持 /etc/yum.repos.d yum配置文件位置 yum check -update 检查可更新的程序 yum update 全部更新 yum update zsh 更新指定程序包 yum upgrade zsh 升级指定程序包 yum groupdate “智能卡支持” 升级程序组 yum makecache 更改配置后,重建缓存 yum remove 删除程序包 yum groupremove “智能卡支持” 删除程序组 yum deplist **xorg-xll-ximiit(**软件包名字) 查看软件包的依赖关系 yum info yelp-xsl-3.28.0-1.el7(软件包名字) 显示安装包信息 yum list 显示所有已安装和可安装的程序包 yum list zsh 显示指定程序包安装情况 yum groupinfo <“智能卡支持”>(程序组的名字) 显示程序组的信息 yum search zsh 根据关键字(zsh)查找安装包
-
-
配置yum源
-
安装软件前若使用本地yum源需先挂载
-
[root@localhost~]# mount /dev/cdrom /media
-
进入yum源配置文件路径
-
cd /etc/yum.repos.d
-
-
备份原有配置文件
-
mkdir back mv Cent Os_*back
-
-
编辑自定义的yum源配置文件,后缀必须是 .repo
-
vim cdrom.repo #cdrom: 设定源的名称 name = local media # 解释说明 baseurl=file:///media # 指定安装包所在位置 # file:// 代表本地文件协议 # / media 代表根目录下的media,本地磁盘使用file协议
-
-
enabled = 1 # 启动本项(默认) gpgcheck = 0 # 关闭密匙验证
-
-
编译安装源代码包
-
确认源代码编译的环境--------需要支持 c/c++ 程序语言的编译器
- gcc 、 gcc - c++
- make : gcc – version #查看gcc版本
-
下载源码包安装文件的步骤:
-
- 解包,习惯上将软件包释放到 **/usr/src/**目录,解包后的源代码文件位置:
/usr/src/软件名-版本号/
-
过程1. :
[root@localhost~]# tar xvf keepalived - 2.0.19.tar.gz -C /usr/src/ # xvf 的解压、显示
-
- 配置,使用源码目录中的configure 脚本,执行 “ ./configure – help ” 可查询帮助
- 典型的配置选项: –prefix = 软件安装目录
- 配置,使用源码目录中的configure 脚本,执行 “ ./configure – help ” 可查询帮助
-
- 编译, 执行make命令
-
- 安装,执行 make install 命令
-
过程2:
[root@localhost~]# cd/usr/src/keepalived -2.0.19 #切换到源代码所在目录 [root@localhost~]# ./configure -- prefix=/usr/local/keepalived #指定安装目录 [root@localhost~]# yum -y install lrzse #安装
-
rz : 从 windows 向 linux 上传文件
-
sz : 从 linux 向 windows 上传文件
-
-
还可以使用 “&”配置yum 源
[root@localhost keepalived-2.0.19]# ./configure -- prefix = usr/local/keepalived && make && make install 配置、编译、安装
-
vi 编辑器的进阶
-
末行模式下可输入的命令:
:wq 保存退出 :q! 不保存退出 :set nu(number) 显示行号 :set moun 不显示行号 :100 跳转到第一百行 :/linux 查找指定字符,n下一个 :1,3d 删除前三行 :1,$d 删除表一到最后一行 :3,6 s/name/123123/g g:全部 查找并替换字符 :1,$ s/name/MIN/g 所有的min替换成MIN :% s/min/MIN/g 所有的min替换成MIN :1,5 m10 1-5行移动到10行之后 :1,10 copy 20 1-10行复制到20行之后 -
命令模式下的快捷键
ZZ | 保存退出 |
---|---|
ZQ | 不保存退出 |
G | 跳转至文档结尾 |
u | 撤销,后提一步 |
yy | 复制光标所在行 |
3yy | 复制光标所在行开始的下三行 |
p | 粘贴到光标所在行的下一行 |
dd | 删除光标所在行 |
3dd | 删除光标所在行开始的下三行 |
x | 删除光标所在处的字符 |
#x | 删除光标所在处的#个字符 |
X | 向前删除字符 |
#X | 向前删除#个字符 |
作业的管理
- 作业的状态
前台运行 | 在终端页面可见作业运行过程 |
---|---|
后台运行 | 在终端界面看不见作业运行过程 |
后台挂起 | 作业等待其他条件的完成,处于暂停状态 |
作业的调度: | |
前台运行作业 | 输入命令直接运行,即进入前台运行状态 |
前台作业强制关闭 | ctrl +c |
后台运行作业 | & |
挂起前台作业 | ctrl + z |
后台挂起的作业放到前台运行 | fg X (X代表后台的作业序号) |
挂起的作业放到后台运行 | bg X |
jobs[] | 查看作业序号,[]里面的是作业序号 |
-
作业管理
-
作业关闭的方法: jobs查看作业号,使用kill%结束作业序号,即可关闭作业
-
[root@localhost~]# jobs [1] + Running ./test.sh & kill q % 1 kill q % 1 q:强制停止 1:作业序号
-
find / & >> dev /null & 将find命令放置后台运行,将正确的结果放在 dev/null 里
-
-
linux的计划任务
-
linux定时任务的实现方式:
-
at : 一次性计划任务
-
cron : 周期性计划任务
- at 由atd服务负责并管理
-
通过如下指令查看、启动、关闭atd
-
systemctl status atd 查看 service atd status 查看 systemctl start atd 启动 service atd start 启动 systemctl restart atd 重启 service atd restart 重启 systemctl stop atd 关闭 service atd stop 关闭
-
at
-
at 的配置:
-
命令:at
-
功能: 一句预定好的时间,执行指定的任务一次
-
语法:at [选项] [时间]
-
可接受的时间格式、日期
-
MM (月) / DD (日) / YY (年)
-
MM (月) / DD (日) / YYYY (年)
-
HH (小时) : MM (分钟)
-
示例:
[root@localhost~]# at 23:00 12/31/2020/ reboot at > <EOT> (输入结束: ctrl + D)
-
-
-
-
at 时间规范:
-
只输入时间,不输入日期,是在今天的对应的时间
-
是输入日期,不输入时间,被认为是输入日期的当前时间
-
支持输入一个完整的时间
at 23:00 12/31/2020
-
at 队列管理:
atq | 查看at队列 |
---|---|
at -c [at队列 id] | 查看某个队列任务的具体命令 |
atm [队列id] 或者 at -r [队列id] | 删除队列中指定的任务 |
cron —周期计划任务
-
cron 的守护进程为 crond
-
查看crond是都运行:
systemctl status crond 查看 service crond status 查看 systemctl start crond 启动 service crond start 启动 systemctl reatart crond 重启 service crond restart 重启 systemctl stop crond 关闭 service crond stop 关闭 -
cron 周期性计划任务的配置
-
命令格式: crontab [选项]
-
功能:以vi编辑器为基础视线周期性计划任务的配置
-
选项:
-l 查看cron计划任务列表 -e 编辑cron计划任务列表 -r 删除当前用户或指定用户所有cron计划任务列表 -u 为指定用户设置定时任务,只有root可用该选项
-
-
cron 时间格式:
-
分钟 0-59 小时 0-23 每月的哪一天 1-31 月份 1-12 星期几 0-7 0和7 都代表星期日 命令的绝对路径 /bin/ls-l/etc -
分 时 日 月 周 命令 2 12 2 1 *(任意) /bin/ls-l/etc - 1月2日,12点2分(无论哪一年)运行命令
- which [命令] : 查询命令的绝对路径
-
-
“*”所在时间项为任意时间 如果 星在第一列则代表每一分钟,第二列代表每一小时
-
定义连续时间:如: 1-5
-
定义不连续时间: 如: 1,3,5
-
时间间隔为每五分钟: */5 (在第一列)
-
示例1:只要在凌晨2点1分就重启
分 时 日 月 周 命令绝对路径 1 02 * * * /usr/sbin/reboot -
示例二:每周日凌晨两点一分就重启
分 时 日 月 周 命令绝对路径 1 02 * * 0 /usr/sbin/reboot
-
-
cron 编写任务名:
crontab -e 以当前账户创建cron计划任务 crontab -e -u blue 以指定用户创建cron计划任务(仅root) crontab -l 查看当前使用账户的cron队列 crontab -l -u blue 查看其他账户的cron队列(仅root) crontab -r 清除当前账户所有的cron计划任务 crontab -r -u blue 清楚其他账户所有的cron任务(仅root) crontab -e 只删除某一项任务
-
文件打包(归档)----tar
-
命令: tar
-
功能: 将文件、目录打包
-
格式:tar <选项> <打包文件名> <目标>
-
选项
-f 表示使用归档文件 -c 新建一个打包文件 -x 解包 -C 指定解包的目的目录 -t 显示tar打包文件里的内容 -A 将其他打包中的文件追加到一个打包文件中 -r 追加一个或多个文件到已有的tar包中 -u 如果文件比打包文件中的新则替换 -k 再解开打包文件的时候保持原有的文件 -v 打包/解包是显示详细动作 –remove-files 打包后删除文件 –delete 删除打包中的第一个文件 –get 提取某个文件
-
-
-
示例1:现在file1 file2 file3 三个文件包,打包文件名为 back.tar
[root@localhost~]# tar -cvf backup.tar file1 file2 file3
-
示例2:解开 backup.tar包
[root@localhost~]# tar -xvf backup.tar
-
示例3:把backup.tar包解开到/home目录下
[root@localhost~]# tar -xvf backup.tar -C /home
-
示例4:显示backup.tar的内容
[root@localhost~]# tar -tf backup.tar
-
示例5:将aa.tar包中的文件追加到 backup.tar中
[root@localhost~]# tar -Af backup.tar aa.tar
-
示例6:将testc.txt , testd.txt 两个文件追加到backup,tar
[root@localhost~]# tar -rf backup.tar testc.txt testd.txt
-
示例7:判断testc.txt文件,若比backup.tar包新,则替换
[root@localhost~]# tar -uf backup,tar testc.txt
-
示例8:将test1.txt test2.txt文件加入a.tar包中,完成打包后,将两个文件删除
[root@localhost~]# tar -cvf a.tar test1.txt test2.txt --remove -files
-
示例9:删除backup.tar宝中的test1.txt文件
[root@localhost~]# tar -f backup.tar --deletd test1.txt
-
示例10:提取backup.tar包中的test2.txt,textc.txt
[root@localhost~]# tar -f backup.tar --get test2.txt testc.txt
-
查看属性:
[root@localhost~]# tar -tf backup.tar | xargs Ls -L xargs:有些管道无法实现时使用
-
压缩指令 —gzip
-
功能:将文件/打包文件压缩
-
格式:gzip <选项> <目标>
-
选项:默认是-6
-1 压缩速度最快,压缩比最小 -9 压缩速度最慢,压缩比最大
-
-
gzip a.tar + <目标文件名>
-
解压缩指令
-
解压缩指令 gunzip
-
功能:将文件/把宝文件解压缩
-
格式:gunzip <选项> <压缩文件>
-
示例:
[root@localhost~]# gunzip backup.tar.gz 或者 [root@localhost~]# gunzip backkup.tgz #tgz可是为tar.gz的缩写
-
-
gzip -d backup.tar.gz 解压缩,选项 -d 为解压缩
-
-
压缩指令: -bzip2
-
功能: 将文件/打包文件压缩
-
格式:bzip2 <选项> <目录>
-
选项:与gzip 基本一致
-1 压缩速度最快,压缩比最小 -9 压缩速度最慢,压缩比最大
-
-
查看文本类型:
- file <文件名称>
-
解压缩指令:bunzip2
-
格式: bunzip2 <选项> <压缩文件>
-
示例:
[root@localhost~]# bunzip2 b.tar.bz2 或者 [root@localhost~]# bzip2 -d b.tar.bz2
-
-
-
打包并压缩 tar
-
tar可以实现直接调用相关压缩程序来完成打包及压缩的步骤
-
-
调用gzip/gunzip
[root@localhost~]# tar -czvf etc.tar.gz [文件名] /etc 压缩 [root@localhost~]# tar -xzvf etc.tar.gz -C /home 解压缩
-
-
-
调用bzip2/bunzip2
[root@localhost~]# tar -cjvf etc.tar.gz [文件名] /etc 压缩 [root@localhost~]# tar -xjvf etc.tar.gz -C /home 解压
-
-
-
进程管理
-
ps aux** : 查看静态进程
-
top :查看动态进程
-
结束进程
-
[root@localhost~]# -ps auc | grep [程序名] [root@localhost~]# -kill pid(程序id号) [root@localhost~]# -kill -q pid #强制结束
-
-
结束相同名称的进程:
-
[root@localhost~]# tar -killall [进程名称] [root@localhost~]# tar -killall -q [进程名称]
[root@localhost~]# gunzip backup.tar.gz 或者
[root@localhost~]# gunzip backkup.tgz #tgz可是为tar.gz的缩写 -
gzip -d backup.tar.gz 解压缩,选项 -d 为解压缩
-
-
压缩指令: -bzip2
-
功能: 将文件/打包文件压缩
-
格式:bzip2 <选项> <目录>
-
选项:与gzip 基本一致
-1 压缩速度最快,压缩比最小 -9 压缩速度最慢,压缩比最大
-
-
查看文本类型:
- file <文件名称>
-
解压缩指令:bunzip2
-
格式: bunzip2 <选项> <压缩文件>
-
示例:
[root@localhost~]# bunzip2 b.tar.bz2 或者 [root@localhost~]# bzip2 -d b.tar.bz2
-
-
-
打包并压缩 tar
-
tar可以实现直接调用相关压缩程序来完成打包及压缩的步骤
-
-
调用gzip/gunzip
[root@localhost~]# tar -czvf etc.tar.gz [文件名] /etc 压缩 [root@localhost~]# tar -xzvf etc.tar.gz -C /home 解压缩
-
-
-
调用bzip2/bunzip2
[root@localhost~]# tar -cjvf etc.tar.gz [文件名] /etc 压缩 [root@localhost~]# tar -xjvf etc.tar.gz -C /home 解压
-
-
-
进程管理
-
ps aux** : 查看静态进程
-
top :查看动态进程
-
结束进程
-
[root@localhost~]# -ps auc | grep [程序名] [root@localhost~]# -kill pid(程序id号) [root@localhost~]# -kill -q pid #强制结束
-
-
结束相同名称的进程:
-
[root@localhost~]# tar -killall [进程名称] [root@localhost~]# tar -killall -q [进程名称]
-