目录
- Linux 目录结构
- 开机/重启/用户切换/注销
- 用户管理
- 实用指令
- 组管理和权限管理
- 权限
- crond 任务调度
- 进程管理
- rpm 和 yum
- shell 编程
Linux 目录结构
Linux 目录与 Windows 目录对比
Windows 目录结构
Linux 目录结构
深刻理解 Linux 树状文件目录是非常重要的,只有记住他们,你才能在命令行中任意切换,想去哪里去哪里
Linux 世界里---一切皆文件
对于 Linux 而言,所有的东西都是文件
比如说,cpu 会映射到 /dev 下的 cpu 这个目录
再比如说,硬盘(disk)会被映射到 /dev 下的 disk 这个目录
Linux 目录结构详解
/bin
存放最经常使用的指令的,比如说 cp,ls,kill
/sbin
系统管理员使用的系统管理指令
/home
存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般该目录是以用户的账号命名的
/root
系统管理员的用户主目录
/boot
存放的是启动 Linux 时使用的一些核心文件
/lib
库文件存放目录
/etc
存放所有系统管理所需要的配置文件,比如说 mysql 中的配置文件,my.conf
/usr
用户的很多应用程序和文件都放在这个目录下,有点像 Windows 下的 program files 目录
/proc, 别动
这是系统内存的映射
/srv, 别动
service 的缩写,存放的是一些服务启动之后需要使用的数据
/sys, 别动
系统相关文件
/tmp
用来存放临时文件
/dev
类似于windows 的设备管理器,把所有的硬件用文件的形式存储
/media
Linux会识别一些设备,例如U盘,光驱等等,识别后,Linux会把识别的设备挂载到这个目录下
/mnt
用于让用户临时挂载别的文件系统,我们可以将外部的存储挂载在/nmt/上,然后进入该目录就可以查看里面的内容的,如我们之前设置的共享文件夹
/opt
正常这个文件夹是用来放安装包的
/usr/local
安装后的程序存放的地方
/var
存放经常需要被修改的文件,比如各种日志文件
/selinux
全名--- security enhanced linux, 安全加强 linux
这个类似于 windows 中的杀毒软件,是一种安全系统,比如收到攻击的时候这个文件会被触发
常用快捷键案例
- 拷贝当前行,并粘贴
拷贝: yy
粘贴: p - 拷贝当前行向下 5 行,并粘贴
拷贝 5 行: 5yy - 删除当前行
删除: dd - 删除当前行向下 5 行
删除 5 行: 5dd - 光标移至最后一行
G - 光标移至首行
gg - 移动到第 7 行
7gg - 撤销
u
常用命令
- 查找某个关键字
/关键字 - 取消高亮
:nohl - 显示行号
:set nu - 取消行号
:set nonu
开机/重启/用户切换/注销
关机/重启命令
shutdown 命令
shutdown -h now :立即关机
shutdown -h 2 :1分钟后关机
shutdown -r now :立即重启
shutdown -r 1 :1分钟后重启
halt
关机
reboot
重启
sync:
把内存的数据同步到磁盘
特别注意: 当关机或重启前,都应当先执行一下 sync 指令,把内存的数据写入磁盘,防止数据丢失
用户切换/注销
切换用户
su - 用户名 切换用户
exit 回到原来用户
注销用户
前提:图形界面无效
logout
用户管理
查看所有用户
cat /etc/passwd |cut -f 1 -d :
用户的信息是保存在 /etc/passwd 下的
cat /etc/passwd
但是这些行包含了很多信息,看起来不太舒服。
cut 裁剪行
cut -f 1 -d :
参数 | 作用 |
---|---|
-d : | 自定义 : 为分隔符(define) |
-f 1 | 选择裁剪后的第一个域(field) |
这样就只输出每行首部的 username 了
用户总数
添加用户
基本语法
useradd [选项] 用户名
例子:
useradd lxx
说明:
1.创建用户成功后会自动创建和用户名同名的家目录
指定家目录
useradd -d 目录路径 用户名
指定用户组
useradd -g 用户组名 用户名
给用户指定或修改密码
基本语法
passwd 用户名
删除用户
基本语法
userdel 用户名 删除用户,保留家目录
userdel -r 用户名 删除用户,不保留家目录
说明
正常在我们删除用户的时候,一般会保留家目录
查询用户信息
基本语法
id 用户名
切换用户
基本语法
su - 用户名 切换用户
exit 返回原来用户
用户组
查看用户组
因为 /etc/group 文件是用户组的配置文件,所以可以在这个文件里查看所有的用户组信息哦,
cat /etc/group
增加组
groupadd 组名
删除组
groupdel 组名
前提:组内不能有用户,否则无法删除
修改用户的组
基本指令
usermod -g 组名 用户名
用户配置文件 /etc/passwd
这是用户的配置文件,记录着用户的各种信息
每行含义:用户名:口令(不显示):用户id:组id:注释性描述:主目录:Shell
cat /etc/passwd
口令配置文件 /etc/shadow
口令配置文件
存用户密码和相关时间的地方
cat /etc/shadow
组的配置文件 /etc/group 文件
组的配置文件
cat /etc/group
实用指令
指定运行级别
- 运行级别说明:
- 0: 关机
- 1: 单用户[找回丢失密码]
- 2: 多用户状态[无网络服务]
- 3: 多用户状态[有网络服务]
- 4: 保留级别
- 5: 图形界面
- 6: 系统重启
修改默认运行级别
vim /etc/inittab
修改最后一行:
id:5:initdefault:
切换运行级别
基本指令
init [012356]
帮助指令
man 指令及配置文件
help shell内置指令
文件目录指令
pwd 指令
pwd 显示当前所在的目录
ls 指令
列出目标目录中所有的子目录和文件
ls [选项] [目录或文件] 查看文件信息
-a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件。
-A同-a,但不列出“.”(表示当前目录)和“..”(表示当前目录的父目录)。
-c 配合 -lt:根据 ctime 排序及显示 ctime (文件状态最后更改的时间)配合 -l:显示 ctime 但根据名称排序否则:根据 ctime 排序-C 每栏由上至下列出项目
–color[=WHEN] 控制是否使用色彩分辨文件。WHEN 可以是’never’、’always’或’auto’其中之一
-d, –directory 将目录象文件一样显示,而不是显示其下的文件。
-D, –dired 产生适合 Emacs 的 dired 模式使用的结果
-f 对输出的文件不进行排序,-aU 选项生效,-lst 选项失效
-g 类似-l,但不列出所有者
-G, –no-group 不列出任何有关组的信息
-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)
–si 类似 -h,但文件大小取 1000 的次方而不是 1024
-H, –dereference-command-line 使用命令列中的符号链接指示的真正目的地
–indicator-style=方式 指定在每个项目名称后加上指示符号<方式>:none (默认),classify (-F),file-type (-p)
-i, –inode印出每个文件的 inode 号
-I, –ignore=样式 不印出任何符合 shell 万用字符<样式>的项目
-k 即 –block-size=1K,以 k 字节的形式表示文件的大小。
-l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来。
-L, –dereference 当显示符号链接的文件信息时,显示符号链接所指示的对象而并非符号链接本身的信息
-m所有项目以逗号分隔,并填满整行行宽
-o 类似 -l,显示文件的除组信息外的详细信息。
-r, –reverse 依相反次序排列
-R, –recursive 同时列出所有子目录层
-s, –size 以块大小为单位列出所有文件的大小
-S 根据文件大小排序–sort=WORD 以下是可选用的 WORD 和它们代表的相应选项:
extension -X status -c
none -U time -t
size -S atime
-utime -t access -u
version -v use -u
-t 以文件修改时间排序
-u 配合 -lt:显示访问时间而且依访问时间排序
- 配合` -l`:显示访问时间但根据名称排序
- 否则:根据访问时间排序
-U 不进行排序;依文件系统原有的次序列出项目
-v 根据版本进行排序
-w, –width=COLS 自行指定屏幕宽度而不使用目前的数值
-x 逐行列出项目而不是逐栏列出
-X 根据扩展名排序
-1 每行只列出一个文件
–help 显示此帮助信息并离开
–version 显示版本信息并离开
cd 指令
cd 路径
cd ~: 回到家目录
cd ..: 回到上一级目录
mkdir 指令
mkdir [选项] 路径 创建文件夹
mkdir -p 路径 创建多级文件夹
rmdir 指令
rmdir [选项] 路径 删除空文件夹
rmdir -r 路径 递归删除空文件夹
文件夹下有内容,则无法删除
touch 指令
touch 文件路径
可以一次创建多个文件(不是文件夹)
touch 文件路径1 文件路径2
-a 改变档案的读取时间记录。
-m 改变档案的修改时间记录。
-c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
-f 不使用,是为了与其他 unix 系统的相容性而保留。
-r 使用参考档的时间记录,与 --file 的效果一样。
-d 设定时间与日期,可以使用各种不同的格式。
-t 设定档案的时间记录,格式与 date 指令相同。
--no-create 不会建立新档案。
--help 列出指令格式。
--version 列出版本讯息。
cp 指令
拷贝文件到目标路径
基本语法
cp [选项] 源路径 目标路径
cp 源路径 目标路径 拷贝单个文件
cp -r 源路径 目标路径 拷贝文件夹
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
补充
当拷贝时发现相同文件,会提示[是否覆盖?]
\cp [选项] 源路径 目标路径 取消提示,强制复制
rm 指令
删除目录或者文件
基本语法
rm [选项] 目标路径
rm 文件路径 删除文件
rm -r 文件夹路径 删除文件夹
rm -f xxxx 强制删除不提示
-i 删除前逐一询问确认。
-f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
-r 将目录及以下之档案亦逐一删除。
mv 指令
移动文件或重命名
基本语法
mv 源路径 目标路径
-b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。
-i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。
-f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。
-n: 不要覆盖任何已存在的文件或目录。
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
cat 指令
显示文件内容
基本语法
cat [选项] 文件路径
cat 文件路径 显示文件内容
cat -n 文件路径 显示文件内容,并显示行号
-n 或 --number:由 1 开始对所有输出的行数编号。
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。
-v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。
-E 或 --show-ends : 在每行结束处显示 $。
-T 或 --show-tabs: 将 TAB 字符显示为 ^I。
-A, --show-all:等价于 -vET。
-e:等价于"-vE"选项;
-t:等价于"-vT"选项;
补充说明
正常情况为了方便阅读,我们会在 cat 指令最后加上管道符"
|",把内容传给 more,分页显示
如:
cat -n /etc/profile | more
more 指令
more 指令是基于vi编辑器的文本过滤器,以全屏的方式按页显示文本内容
more 指令中内置了很多快捷键,用起来很方便
基本语法
more 文件路径
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
-num 一次显示的行数
-d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声
-l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能
-f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上)
-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数
快捷键
空格 向下翻一页
Enter 向下翻一行
q 立即离开
Ctrl+F 向下滚动一屏
Ctrl+B 向上滚动一屏
= 显示当前行号
:f 输出文件名和当前行号
less 指令
比 more 更加强大,功能比 more 更多
基本语法
less [参数] 文件路径
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似 more 命令的百分比
-N 显示每行的行号
-o <文件名> 将 less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将"tab"键显示为规定的数字空格
/字符串:向下搜索"字符串"的功能
?字符串:向上搜索"字符串"的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向上翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一页
回车键 滚动一行
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页
快捷键
空格 向下翻一页
pagedown 向下翻一页
pageup 向上翻一页
/字符串 向下查找[字符串],n下一个,N上一个
?字符串 向上查找[字符串],n下一个,N上一个
q 离开 less
>指令 >>指令
基本说明
把前方语句的结果存进文件,若文件不存在会自动创建
>:输出重定向 会覆盖原来文件内容
>>:追加重定向 追加到文件末尾
echo 指令
把内容输出到控制台
如下:
echo "我是杨家三少"
echo $PATH
head 指令
head
用于显示文件的开头部分内容,默认情况下
head 指令显示文件的前
10 行内容
基本语法
head [参数] [文件]
head 文件路径 查看文件前10行
head -n 5 文件路径 查看文件前5行
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数。
tail 指令
tail
用于显示文件的结尾部分内容,默认情况下 tail 指令显示文件的后 10 行内容
基本语法
tail [参数] [文件]
tail 文件路径 查看文件前 10 行
tail -n 5 文件路径 查看文件前 5 行
tail -f 文件路径 实时追踪文件所有的更新-----经常使用
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
--pid=PID 与 -f 合用,表示在进程 ID,PID 死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与 -f 合用,表示在每次反复的间隔休眠 S 秒
ln 指令
软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
ln [参数][源文件或目录][目标文件或目录]
ln -s 源文件或源文件夹 软连接名
必要参数:
--backup[=CONTROL] 备份已存在的目标文件
-b 类似 --backup ,但不接受参数
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程
选择参数:
-S "-S<字尾备份字符串> "或 "--suffix=<字尾备份字符串>"
-V "-V<备份方式>"或"--version-control=<备份方式>"
--help 显示帮助信息
--version 显示版本信息
history 指令
查看已经执行过历史命令,也可以执行历史指令
history 查看所有的历史指令
history 10 查看最近执行的 10 条指令
!100 执行编号为 100 的指令
-N: 显示历史记录中最近的N个记录;
-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中;
-d<offset>:删除历史记录中第 offset 个命令
-n<filename>:读取指定文件
时间日期类
date 指令
基本语法
date 显示当前日期
date +%Y 显示当前年份
date +%m 显示当前月份
date +%d 显示当前天
date "+%Y-%m-%d %H:%M:%S"
cal 指令
查看日历
cal 显示当前日历
cal 2020 显示 2020 年的日历
find 指令
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
find path -option [ -print ] [ -exec -ok command ] {} \;
find [范围] [选项]
范围:指路径,不写默认从当前向下找,类似于 windows 的查找
选项:
-name 文件名 按文件名查找
-user 用户名 查找属于该用户的所有文件
-size 按文件大小查找
+20M
-20M
20M
20K
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去 n 天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去 n 天内创建的文件
-mtime n : 在过去 n 天内修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
grep 指令 和 管道符号 |
管道符:"|",表示将前一个命令的处理结果输出传递给后面的命令处理
grep: 过滤查找
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
grep [选项] 过滤内容
选项:
-n 显示匹配行及行号
-i 忽略字母大小写
-a 或 --text : 不要忽略二进制的数据。
-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
-c 或 --count : 计算符合样式的列数。
-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-F 或 --fixed-regexp : 将样式视为固定字符串的列表。
-G 或 --basic-regexp : 将样式视为普通的表示法来使用。
-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
-i 或 --ignore-case : 忽略字符大小写的差别。
-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
-o 或 --only-matching : 只显示匹配PATTERN 部分。
-q 或 --quiet或--silent : 不显示任何信息。
-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
-s 或 --no-messages : 不显示错误信息。
-v 或 --invert-match : 显示不包含匹配文本的所有行。
-V 或 --version : 显示版本信息。
-w 或 --word-regexp : 只显示全字符合的列。
-x --line-regexp : 只显示全列符合的列。
-y : 此参数的效果和指定"-i"参数相同。
压缩和解压类
gzip/gunzip 指令
用于压缩和解压文件
gzip 文件路径 压缩
gunzip gz 文件路径 解压缩
说明:使用 gzip 压缩文件之后,不会保留原来的文件
zip/unzip 指令
zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
zip [选项] xxx.zip 被压缩内容 压缩文件或者目录
-r 压缩目录
-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
unzip [选项] xxx.zip 解压文件
-d 目录 指定压缩后的存放目录
tar指令
tar 指令 是打包指令,最后打包后的文件是
.tar.gz的文件
压缩:
tar -zcvf xx.tar.gz 被压缩内容 压缩
tar -zxvf xx.tar.gz -C 目标路径 解压
z:使用gzip格式压缩
c:创建压缩包
x:解压
f:显示压缩解压过程
组管理和权限管理
查看文件的所有者
ls -ahl
修改文件所有者
chown 用户名 文件名
组的创建
groupadd 组名
文件/目录 所在组
查看文件/目录 所在组
ls –ahl
修改文件所在组
chgrp 组名 文件名
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用
root 的管理权限可以改变某个用户所在的组
usermod –g 组名 用户名
权限
ls -l
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9 位说明
第 0 位确定文件类型(d,-,l)
第 1-3 位确定所有者(该文件的所有者)拥有该文件的权限
第 4-6 位确定所属组(同用户组的)拥有该文件的权限
第 7-9 位确定其他用户拥有该文件的权限
rwx 权限详解
rwx作用到文件
r:可读
w:可写[可写不代表可以删除,删除一个文件的前提是对文件所在的目录有写的权限]
x:可执行
rwx作用到目录
r:可读(可用ls查看目录内容)
w:可写[可在目录内创建+删除+重命名文件或目录]
x:可执行[可以进入目录]
修改权限
chmod 权限变更格式 文件或目录路径
权限变更格式一:
u:所有者 g:所有组 o:其他人 a:所有人
1. u=rwx,g=rx,o=x
2. o+w 其它用户增加w权限
3. a-x 所有人减去执行权限
权限变更格式二:
r = 4 w = 2 x = 1 rwx = 7 rx = 5
chmod u=rwx,g=rx,o=x 可以写成 chmod 751
修改文件所有者
chown newowner file 改变文件所有者
chown -R newowner 文件夹 使得所有子文件或子目录生效
修改文件所在组
chgrp newgroup file 改变文件所有组
chgrp -R newgroup 文件夹 使得所有子文件或子目录生效
crond 任务调度
基本语法
crontab [选项]
-e : bianji crontab定时任务
-l : 查询crontab
-r : 删除当前用户所有的crontab任务
进程管理
显示系统执行的进程 (ps)
说明
查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux
,ps -ef
,正常与grep
连
ps 指令详解
BSD风格 详解
user 用户名称
pid 进程号
%cpu 进程占用cpu百分比
%%mem 进程占用物理内存的百分比
vsz 进程占用虚拟内存的大小
rss 进程占用物理内存的大小
tty 终端名称(后台则为?)
stat 进程状态
S:睡眠
s:会话的先导进程
N:进程拥有比普通优先级更低的优先级
R:正在运行
D:短期等待
Z:僵尸进程
T:被跟踪或者被停止
start 进程启动时间
time 使用cpu总时间
command 启动进程所用的命令和参数,如果过长会被截断显示
system V 风格详解
uid 用户id
pid 进程id
ppid 父进程id
C 进程占cpu百分比
stime 进程启动时间
tty 终端名称(后台则为?)
cmd 启动进程所用的命令和参数
终止进程 kill 和 killall
基本语法:
kill 进程号
-9 强迫进程立即停止
killall 进程名称
查看进程树 pstree
pstree [选项]
-p 查看进程pid
-u 查看进程所属用户
服务(service)管理
说明
服务(service) 本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd 防火墙等),因此我们又称为守护进程
基本使用
service 服务名 [start | stop | restart | reload | status]
查看服务名
/etc/init.d 此文件夹下放着系统都有哪些服务
ls -l /etc/init.d
服务器运行级别(runlevel)
查看或者修改默认级别: vi /etc/inittab
Linux 系统有 7 种运行级别(runlevel):常用的是级别 3 和 5
运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
运行级别 2:多用户状态(没有 NFS),不支持网络
运行级别 3:完全的多用户状态(有 NFS),登陆后进入控制台命令行模式
运行级别 4:系统未使用,保留
运行级别 5:X11 控制台,登陆后进入图形 GUI 模式
运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
chkconfig 指令
说明
通过 chkconfig 命令可以给每个服务的各个运行级别设置自启动/关
基本语法
chkconfig 查看每个服务的配置
chkconfig 服务名 查看具体服务的配置
chkconfig --level 5 服务名 on/off 给服务设置是否自动启动
chkconfig 重新设置服务后自启动或关闭,需要重启机器
reboot
才能生效
动态监控进程 (top)
说明
top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于
top 在执行一段时间可以更新正在运行的的进程
基本语法
top [选项]
-d 指定每隔几秒更新,默认 3 秒
-i 不显示任何闲置或者僵尸进程
-p id号 监听指定进程
交互操作:
P 以 cpu 使用率排序,默认就这个
M 以内存使用率排序
N 以 pid 排序
u 监听具体用户
k 终止指定进程
q 退出 top
rpm 和 yum
rpm 包的管理
介绍
一种用于互联网下载包的打包及安装工具.它生成具有 .RPM
扩展名的文件。RPM
是 RedHat
Package Manager(RedHat 软件包管理工具)的缩写,类似
windows 的 setup.exe
rpm 包的简单查询指令
rpm –qa 查询已安装的 rpm 列表
rpm 包名的基本格式
一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
firefox:名称
45.0.1-1:版本号
el6.centos.x86_64:centos6.X---64位
rpm 其它指令
rpm -q 软件包名 查看是否已经安装
rpm -qi 软件包名 查看软件包信息
rpm -ql 软件包名 查看软件包中的文件安装位置
rpm -qf 文件(如:/etc/passwd) 查看某个文件属于哪个 rpm 包
卸载 rpm 包
rpm -e 包名
包依赖问题:
如果其它软件包依赖于你要卸载的软件包,卸载时则会产生错误信息
rpm -e --nodeps 包名 强制删除
安装 rpm 包
rpm -ivh RPM 包全路径名称
i:install 安装
v:verbose 提示
h:hash 进度条
yum
说明
Yum 是一个 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。
类型 python 中的 pip
基本指令
yum list|grep xx 查询 yum 服务器上是否有需要安装的包
yum install xxx 下载安装
shell 编程
说明
Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的系统级程序
shell 编程打印 hello world
代码部分
#!/bin/bash
echo 'hello world'
代码解释:
1.#!/bin/bash:
告诉计算机,使用 bash 解释器来执行代码
2.echo:
控制台输出
执行代码
方式一:
给脚本可执行权限
chmod 744 myshell.sh
然后直接运行脚本
方式二:(不推荐)
直接调用 shell 解释器执行
sh myshell.sh
注释
单行注释
#内容
多行注释
:<<!
内容
!
变量
变量的介绍
- Linux 中变量的分类:系统变量 自定义变量
- 系统变量:
- $PATH
- $HOME
- $PWD
- $SHELL
- $USER
- 显示当前shell中所有的变量 :set
变量的定义
基本语法
1.定义变量:变量名=变量值
2.撤销变量:unset 变量名
3.声明静态变量:readonly 变量名. 静态变量不能 unset
定义规则
1.变量名称可以由字母、数字和下划线组成,但是不能以数字开头
2.等号两侧不能有空格
3.变量名称一般习惯为大写
将命令的返回值赋给变量
1.A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量 A
2.A=$(ls -la) 等价于反引号
设置环境变量
基本语法
1.export 变量名=变量值 将 shell 变量输出给环境变量
2.source 配置文件 让修改后的配置信息立即生效
3.echo $变量值 查看环境变量的值
位置参数变量
介绍
当我们执行一个 shell
脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
基本语法
- $n (功能描述:n 为数字,$0 代表命令本身,$1-$9 代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
- $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
- $@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
- $#(功能描述:这个变量代表命令行中所有参数的个数)
预定义变量
介绍
就是 shell 设计者事先已经定义好的变量,可以直接在
shell 脚本中使用
基本语法
$$ (功能描述:当前进程的进程号(PID))
$! (功能描述:后台运行的最后一个进程的进程号(PID))
$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行失败)
运算符
基本语法
1.$((运算式))
2.$[运算式]
3.`expr m + n`
特点:运算符之间要有空格
+
-
/
%
\*
\( \)
判断
基本语法
[ 条件 ] 注意:条件前后要有空格
特别的:
[ 非空 ] 为true
[] 为false
[ haha ] && echo true || echo false
判断语句
字符串比较
= 判等
!= 判不相等
整数比较
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
-eg 等于
-ne 不等于
文件权限判断
-r 有读的权限 [ -r 文件 ]
-w 有写的权限
-x 有执行权限
文件类型判断
-f 存在并且是一般文件 [-f 文件]
-e 文件存在
-d 存在并且是一个目录
流程控制
if 判断
基本语法
if [ 条件 ]
then
代码
fi
if [ 条件 ]
then
代码
else
代码
fi
if [ 条件 ]
then
代码
elif [ 条件 ]
then
代码
else
代码
fi
case 选择分支
基本语法(相当诡异,令人发指, what a fuck)
case $变量名 in
'值1')
代码
;;
'值2')
代码
;;
*)
代码 都没命中执行
;;
esac
for 循环
遍历
基本语法
for 变量 in 值1 值2 值3
do
代码
done
循环
基本语法
for {{初始值;循环条件;变量变化}}
do
代码
done
while 循环
基本语法
while [ 条件 ]
do
代码
done
与用户交互
基本语法
read 选项 变量
选项:
-p:提示信息
-t:等待输入的时间
函数
系统函数
获得路径最后一部分 (basename)
基本语法
basename [pathname] [suffix]
如果指定的 suffix,那么会去掉结果中 suffix 的部分
获得基础路径 (dirname)
基本语法
dirname [pathname]
自定义函数
基本语法
function 函数名(){
代码;
#参数使用:$1,$2,...,${10}...
return xxx;
}
调用:
函数名 值1 值2
标签:文件,--,用户,笔记,语法,指令,Linux,目录
From: https://www.cnblogs.com/TMesh/p/18685470