Linux-系统常用命令整理
linux的特点
- linux严格区分大小写
- linux中所有内容以文件形式保存,包括硬件
- linux不靠扩展名区分文件类型,靠权限区分
- windows下的程序不能直接在linux中安装和执行
1. 基础命令
命令 | 作用 | 举例 | 备注 |
---|---|---|---|
data | 时间 | data | |
cal | 日历 | cal 2018 | |
cal 7 2018 | |||
pwd | 当前位置 | ||
cd | 回到根目录 | cd .. | 返回上层目录 |
ls | 列举当前目录的文件 | ls -l | 显示文件详细信息 |
mkdir | 新建文件夹 | mkdir name | 显示文件详细信息 |
rmdir | 删除文件夹 | rmdir name | |
cp | 复制文件 | cp a.txt new_a.txt | |
cat | 打开查看文件 | cat file.txt | |
diff | 查看两个文件的不同 | diff a.txt b.txt | |
head | 查看文件前面几行内容 | head a.txt -n 5 | 查看前五行 |
tail | 查看文件的最后几行 | tail a.txt -n 1 | |
wc | 查看文件行数、单词数、字符数 | wc a.txt | |
wc -l a.txt | 行数 | ||
wc -w a.txt | 单词数 | ||
wc -c a.txt | 字符数 | ||
rm | 删除文件,注意:无回收站!! | rm a.txt | |
mv | 修改文件名,移动文件 | mv a.txt b.txt | 修改名字 |
mv a.txt dir | 移动文件 | ||
less | 滑动查看文件内容(与cat类似) | less a.txt q | 退出 |
chmod | 修改读写权限 | chmod u-r a.txt | 去掉作者读权限 |
chmod u+r a.txt | 添加作者读权限 | ||
chmod go-r a.txt | 去掉除作者外的读权限 | ||
二进制修改(rwx-rwx-rwx) | chmod 444 a.txt | 对所有人员只可读 | |
grep | 对文本文件进行搜索(支持正则表达式) | grep word a.txt | 显示所有包含word的行数 |
grep ^Ho a.txt | 以Ho开头的单词 | ||
grep [Hh]ill a.txt | Hill或hill | ||
组合命令grep + wc | grep d.f a.txt \ | wc |
文件处理命令
查询目录中的内容:ls
- -a 显示所有文件,包括隐藏文件
- -l 显示详细信息
- -d 查看目录属性
- -h 人性化显示文件大小(非字节显示)
- -i 显示文件id号
ll:ls -l的别名
文件详细信息
文件类型
文件信息的第一位,linux有7种文件类型
- -:文件
- d:目录
- l:软链接
权限含义
u | g | o |
---|---|---|
作者 | 小组 | 其他 |
r | w | x | - |
---|---|---|---|
可读 | 可写 | 可运行 | 不能 |
创建目录
mkdir
- -p:递归创建目录
切换目录
cd
- ~:家目录
- -:上次目录
- ..:上一级目录
删除文件或目录
rmdir:只能删除空白目录,故很少用
rm -rf:强制删除目录
- -r:删除目录
- -f:强制删除
自杀式删系统:rm -rf /
复制命令
cp
- -r:复制目录
- -p:连带文件属性复制
- -d:若源文件是链接文件,则复制链接属性
- -a:相当于 -pdr
剪切或改名命令
mv
硬链接
ln 源文件 目标文件
不建议使用
- 拥有相同的i节点和存储block块,可以看做是同一个文件
- 可通过i节点识别
- 不能跨分区
- 不能针对目录使用
- 删除其中一个,另一个可正常使用
软链接
ln -s 源文件 目标文件
- 类似windows的快捷方式
- 软链接拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
- lrwxrwxrwx l软链接,权限均为rwx
- 修改任意文件,另一个都改变
- 删除原文件,软链接不能使用.
注意:建立软链接一定要写绝对路径!
文件搜索
文件搜索命令locate
locate 文件名
- 在后台数据库中按文件名搜索,搜索速度更快
- /var/lib/mlocate #locate命令所搜索的后台数据库
- updatedb 更新数据库(默认每天更新数据库)
- updatedb的规则在updatedb.conf文件设置
- 缺点:只可以根据文件名搜索
搜索命令的命令 whereis
whereis 命令名
搜索命令所在路径及帮助文档所在位置
- -b:只查看可执行文件
- -m:只看帮助文档所在位置
which 命令名
- 可看到命令的位置
- 可看到命令的别名
默认执行命令需要使用绝对路径,但是linux提供了$PATH环境变量,会依次寻找PATH中的路径判断命令是否可执行
文件搜索命令 find
find [搜索范围] [搜索条件]
find / -name install.log
- 避免大范围搜索,会非常耗费资源系统资源
- 若使用模糊查询,需使用通配符,文件名加引号
- * 匹配任意内容
- ? 匹配任意一个字符
- [] 匹配任意一个中括号内的字符
- -iname 不需分大小写
- -user root 按照所有者搜索
- -nouser 查找没有所有者的文件
- -mtime +10 查找10天前修改的文件 -10:10天内 10:10天当天
- -size 25k / -25k / +25k 25M:大小写注意
- -inum 262421 根据i节点查找
- -a 逻辑与
- -o 逻辑或
- -exec ls -lh \{} \\;
字符串搜索命令 grep
grep [选项] 字符串 文件名
- -v 取反
- -i 忽略大小写
- 可使用正则表达式
帮助命令
最常用 man
man [命令]
- -f 查看命令的帮助等级信息,相当于whatis [命令]
- -x 具体指定帮助等级 1 2 3 4 5 6 …
- -k 找到与此命令名称相关的所有命令名称
其他帮助命令
命令 —help
- ls —help
获取内部命令(系统原生自带)
- whereis cd 查看是否是shell内部命令
- help cd 获取内部命令帮助
info ls
- 获取大量文档,操作比较麻烦
压缩与解压缩
常用压缩格式:.zip .gz .bz2
.zip
- 压缩文件:zip 压缩文件名 源文件
- 压缩目录:zip -r 压缩文件名 源文件
- 解压缩:unzip 压缩文件
.gz
- 压缩文件(源文件会消失):gzip 源文件
- 压缩目录(压缩目录内的所有文件,但不能压缩目录):gzip -r 压缩目录
- 解压缩
- gzip -d 压缩文件
- gunzip 压缩文件
.bz2格式压缩(不支持目录)
- 压缩文件(不保留源文件):bzip2 源文件
- 压缩文件(保留源文件):bzip2 -k 源文件
- 解压缩(-k保留源文件)
- bzip2 -d 压缩文件
- bunzip2 压缩文件
常用压缩格式.tar.gz .tar.bz2
打包命令tar
tar -cvf 打包文件名 源文件
- -c:打包
- -v:显示过程
- -f:指定打包后的文件名
解打包
tar -xvf 打包文件名 源文件
直接压缩为.tar.gz
- tar -zcvf 压缩包名.tar.gz 源文件
- tar -zxvf 压缩包名.tar.gz
直接压缩为.tar.bz2
- tar -jcvf 压缩包名.tar.bz2 源文件
- tar -jxvf 压缩包名.tar.bz2
关机命令
shutdown [选项] 时间
- -c:取消前一个关机命令
- -h:关机
- -r:重启
其他关机命令
- halt
- poweroff
- init 0
其他重启命令
- reboot
- init 6
系统运行级别
0 | 关机 |
---|---|
1 | 单用户 |
2 | 不完全多用户,不含NFS服务 |
3 | 完全多用户 |
4 | 未分配 |
5 | 图像界面 |
6 | 重启 |
- runlevel:查看系统当前运行级别
- cat /etc/inittab:查看开机初始配置文件
退出登录命令
- logout:每次关闭远程连接前,先退出用户
用户登录命令
w:查看当前用户登录的细节
who:查看当前用户登录
last:过去的登录信息
lastlog:查看所有用户的最后一次登录
磁盘管理
- df 查看磁盘分区使用状况
- -h 以1024进制查看分区类型
- -l 查看本地磁盘信息(默认)
- -T 查看磁盘类型
- du 统计磁盘上的文件大小
- -s path 统计特定文件夹
- -b 以字节为单位统计大小
- -m 以M为单位统计大小
- -h 以1024进制统计大小
磁盘分区
- 主分区和扩展分区总数不能超过4个
- 扩展分区最多只能有一个
- 扩展分区不能直接存取数据,必须建立逻辑分区才可存取数据
分区模式之MBR分区
- 主分区不超过4个
- 单个分区容量最大2TB
分区模式之GPT
- 主分区个数“几乎”没有限制
- 单个分区容量“几乎”没有限制
系统挂载
mount /dev/sdb1 /mnt/imooc
umount /mnt/imooc
用户和用户组
- 用户:使用操作系统的人
- 用户组:具有相同系统权限的一组用户
- /etc/group 存储当前系统中所有用户组信息
- Group: x:123:abc,def,xyz
- 组名称:组密码占位符:组编号:组中用户名列表
- /etc/gshadow 存储当前系统中用户组的密码信息
- Group: * : : abc,def,xyz
- 组名称:组密码:组管理者:组中用户名列表
- /etc/passward 存储当前系统中所有用户的信息
- user : x : 123 : 456 : xxxxxx : /home/user: /bin/bash
- 用户名:密码占位符:用户编号:用户组编号:用户注释信息:用户主目录:shell类型
- /etc/shadow 存储当前系统中所有用户的密码信息
- user :vf;/Zu8sdeS… :::::
- 用户名:密码 :::::
基本命令
groupadd sexy 添加用户组
groupmod -n marker sexy 修改用户组的名字
groupmod -g 668 market 修改用户组的编号
groupadd -g 888 boss 指定添加用户组
groupdel market 删除用户组
useradd -g sexy sdf 向指定用户组中添加用户,会自动创建私人文件夹
useradd -d /home/xxx imooc 添加用户,并创建私人文件夹
usermod -c dgdzmx sdf 添加备注信息
usermod -l cls sdf 重命名用户名
usermod -g sexy imooc 用户切换用户组
userdel jzmb 删除用户
userdel -r jzmb 删除用户及个人文件夹
touch /etc/nologin 进制除root之外的用户登录服务器
进阶命令
passwd -l cls 锁定用户
passwd -u cls 解锁用户
passwd -d cls 删除密码,可无密码登录
- 用户可以同时属于多个组
- 一个主要组
- 多个附属组
gpasswd -a cls boss 添加附属组boss
newgrp boss 用户切换为附属用户组
gpasswd -d cls boss 删除附属组
useradd -g group1 -G group2, group3 同时设置主要组和附属组
其他命令
su username 切换用户
Whoami 显示当前登录用户名
id imooc 显示指定用户的信息
groups imooc 显示imooc用户所在的所有组
chfn imooc 设置用户资料
finger imooc 显示用户详细资料
2. linux shell 脚本
运行方式
1 | sh XXX.sh |
语法
输出
1 | echo "hello world!" |
变量
=
左右两边不能写空格- 变量被使用时,需要加
$
符号,定义与修改时不需要加
1 | a=10 |
注释
1 | a=10 |
运算
=
左右两边不能写空格- 变量被使用时,需要加
$
符号,定义与修改时不需要加 - 运算符左右两边必须加空格
- 运算表达式需要加
expr ...
,另外需要用`…`外扩起来 - 乘法运算不能使用
*
,而应加转义符号\*
,同理\(
、\)
1 | c=`expr $a + $b` |
判断
1 | if [...] |
如:
1 | if [ $a -gt $b ] |
注意:shell中无 >、<等符号
原符号 | > | < | >= | <= | == |
---|---|---|---|---|---|
shell | -gt | -lt | -ge | -le | -eq |
循环
for
1 | for x in ... |
如:
1 | for loop in 1 2 3 4 5 |
while
1 | while command |
如:
1 | x=1 |
字符串
两个单词并列输出
1 | a="hello" |
输入
1 | echo "Please enter a:" |
字符串比较
- 字符串比较:相等用
=
,不等用!=
1 | password="hello123" |
字符串拼接
1 | str1="hello" |
判断为空
1 | str1="" |
判断为空 -z
, 判断非空 -n
数组
sh
命令无法运行数组,bash
可以运行- 运行使用
bash XXX.sh
1 | array=(7 8 9 10) |
3. 进程管理
进程:正在运行的程序
进程管理的作用
- 判断服务器健康状态
- 查看系统中所有进程
- 杀死进程
进程的查看 ps
- ps aux # 查看系统中所有进程,使用BSD操作系统命令格式
- ps -le # 查看系统中所有进程,使用linux命令格式
- 选项
- -a:显示一个终端的所有会话引线
- -u:显示进程的归属用户及内存的使用情况
- -x:显示没有控制终端的进程
- -l:长格式显示,显示更加详细的信息
- -e:显示所有进程,和-A作用一致
- pstree # 显示进程树
- -p:查看id号
- -u:查看进程的用户
top命令
查看系统健康状态
杀死进程
- kill命令
- kill -l 进程号:l为特定选项,以数字表示
- kill -1 2235:重启进程
- kill -9 2236:强制杀死进程
- kill -l 进程号:l为特定选项,以数字表示
- killall:按照进程名批量杀死
- killall -9 httpd
- killall -9 -i httpd:询问模式
- pkill:按照进程名终止进程
- -t 终端号:按照终端号踢出用户
工作管理
工作管理即类似于windows中的最小化窗口。linux中特定任务是绑定到终端里的,只有当前的中断才能管理当前工作。
- 把进程放入后台
- XXX &:在执行的命令后面写
&
符号。并在后台执行 - 按下
ctrl + z
快捷键,放在后台暂停
- XXX &:在执行的命令后面写
- 查看后台的工作
- jobs [-l]:查看后天工作,并显示PID
- +/-:表示最后一个/倒数第二个放入后台的进程
- 将后台暂停的工作恢复到前台执行
- fg %工作号:%可以省略,但是注意工作号和PID的区别。
- 把后台暂停的工作恢复到后台执行
- bg %工作号
后台命令脱离登录终端执行的方法
- 方法一(推荐):把需要后台执行的命令加入
/etc/rc.local
- 方法二:使用系统定时任务,让系统在指定的时间执行某个后台命令
- 方法三(推荐):使用
nohup
命令- nohup [命令] &
4. 其他
shell脚本的其他书写方式
可以直接在linux命令行中直接输入shell脚本
内置变量
变量名 | 含义 |
---|---|
USER | 当前登录的用户名 |
HOME | 当前用户的主目录,可用~代替 |
PATH | 环境变量 |
举例
进入用户主目录
1 | cd $HOME |
添加到环境变量
- linux中,环境变量之间使用
:
隔开 - Windows中,环境变量之间使用
;
隔开
1 | 在该目录下的所有可执行文件均可使用命令行执行 |
其他命令
压缩
1 | 将当前路径下的所有文件打包为CProgram.zip |
tar可选参数 | 含义 |
---|---|
-z | 支持gzip解压文件 |
-c | 建立新的压缩文件 |
-x | 从压缩的文件中提取文件 |
-v | 显示操作过程 |
-f | 指定压缩文件,可以起一个名字 |
解压
1 | zip workspace.zip |
下载
1 | wget + url |