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 源文件 目标文件

不建议使用

  1. 拥有相同的i节点和存储block块,可以看做是同一个文件
  2. 可通过i节点识别
  3. 不能跨分区
  4. 不能针对目录使用
  5. 删除其中一个,另一个可正常使用

软链接

ln -s 源文件 目标文件

  1. 类似windows的快捷方式
  2. 软链接拥有自己的i节点和block块,但是数据块中只保存原文件的文件名和i节点号,并没有实际的文件数据
  3. lrwxrwxrwx l软链接,权限均为rwx
  4. 修改任意文件,另一个都改变
  5. 删除原文件,软链接不能使用.

注意:建立软链接一定要写绝对路径!

文件搜索

文件搜索命令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
2
3
sh XXX.sh
#
bash XXX.sh

语法

输出

1
echo "hello world!"

变量

  • =左右两边不能写空格
  • 变量被使用时,需要加$符号,定义与修改时不需要加
1
2
a=10
echo "hello world!" $a

注释

1
2
a=10
#echo "hello world!" $a

运算

  • =左右两边不能写空格
  • 变量被使用时,需要加$符号,定义与修改时不需要加
  • 运算符左右两边必须加空格
  • 运算表达式需要加expr ...,另外需要用`…`外扩起来
  • 乘法运算不能使用*,而应加转义符号\*,同理\(\)
1
c=`expr $a + $b`

判断

1
2
3
4
5
6
if [...]
then
...
else
...
fi

如:

1
2
3
4
5
6
if [ $a -gt $b ]
then
echo $a
else
echo $b
fi

注意:shell中无 >、<等符号

原符号 > < >= <= ==
shell -gt -lt -ge -le -eq

循环

for
1
2
3
4
for x in ...
do
...
done

如:

1
2
3
4
for loop in 1 2 3 4 5
do
echo "The value is: $loop"
done
while
1
2
3
4
while command
do
...
done

如:

1
2
3
4
5
6
x=1
while [ $x -le 10 ]
do
echo $x
x=`expr $x + 1`
done

字符串

两个单词并列输出
1
2
3
4
5
a="hello"
b="world"

echo $a $b
#echo "$a $b" 也可以
输入
1
2
3
4
5
6
7
echo "Please enter a:"
read a
echo "Please enter b:"
read b

c=`expr $a + $b`
echo $a + $b = $c #此句会原封不动的输出,包括空格,+,=
字符串比较
  • 字符串比较:相等用=,不等用!=
1
2
3
4
5
6
7
8
9
10
11
password="hello123"

echo "Please enter a password:"
read userPassword

if [ $password = $userPassword ]
then
echo "密码正确!"
else
echo "密码错误!"
fi
字符串拼接
1
2
3
4
5
str1="hello"
str2="world"

str3="$str1 $str2"
echo $str3
判断为空
1
2
3
4
5
6
7
str1=""
if [ -z $str1 ]
then
echo "str1 是空的"
else
echo "str1 不是空的"
fi

判断为空 -z, 判断非空 -n

数组

  • sh 命令无法运行数组,bash可以运行
  • 运行使用bash XXX.sh
1
2
3
4
5
6
7
array=(7 8 9 10)
echo ${array[1]} # 可打印 8

for i in ${arr[@]}
do
echo $i # i 表示元素本身
done

3. 进程管理

进程:正在运行的程序

进程管理的作用

  • 判断服务器健康状态
  • 查看系统中所有进程
  • 杀死进程

进程的查看 ps

  • ps aux # 查看系统中所有进程,使用BSD操作系统命令格式
  • ps -le # 查看系统中所有进程,使用linux命令格式
  • 选项
    • -a:显示一个终端的所有会话引线
    • -u:显示进程的归属用户及内存的使用情况
    • -x:显示没有控制终端的进程
    • -l:长格式显示,显示更加详细的信息
    • -e:显示所有进程,和-A作用一致
  • pstree # 显示进程树
    • -p:查看id号
    • -u:查看进程的用户

top命令

查看系统健康状态

1546868308985.png

1546868372660.png

1546868389960.png

1546868416075.png

1546868439574.png

杀死进程

  • kill命令
    • kill -l 进程号:l为特定选项,以数字表示
      1546868827289.png
    • kill -1 2235:重启进程
    • kill -9 2236:强制杀死进程
  • killall:按照进程名批量杀死
    • killall -9 httpd
    • killall -9 -i httpd:询问模式
  • pkill:按照进程名终止进程
    • -t 终端号:按照终端号踢出用户

工作管理

工作管理即类似于windows中的最小化窗口。linux中特定任务是绑定到终端里的,只有当前的中断才能管理当前工作。

  • 把进程放入后台
    • XXX &:在执行的命令后面写&符号。并在后台执行
    • 按下 ctrl + z快捷键,放在后台暂停
  • 查看后台的工作
    • jobs [-l]:查看后天工作,并显示PID
    • +/-:表示最后一个/倒数第二个放入后台的进程
  • 将后台暂停的工作恢复到前台执行
    • fg %工作号:%可以省略,但是注意工作号和PID的区别。
  • 把后台暂停的工作恢复到后台执行
    • bg %工作号

后台命令脱离登录终端执行的方法

  • 方法一(推荐):把需要后台执行的命令加入 /etc/rc.local
  • 方法二:使用系统定时任务,让系统在指定的时间执行某个后台命令
  • 方法三(推荐):使用 nohup 命令
    • nohup [命令] &

4. 其他

shell脚本的其他书写方式

可以直接在linux命令行中直接输入shell脚本
1546868426949.png

内置变量

变量名 含义
USER 当前登录的用户名
HOME 当前用户的主目录,可用~代替
PATH 环境变量

举例

进入用户主目录
1
2
cd $HOME
cd ~
添加到环境变量
  • linux中,环境变量之间使用:隔开
  • Windows中,环境变量之间使用;隔开
1
2
# 在该目录下的所有可执行文件均可使用命令行执行
PATH=$PATH:/home/ubuntn/wprkspace

其他命令

压缩

1
2
3
4
5
6
# 将当前路径下的所有文件打包为CProgram.zip
zip CProgram.zip *
# 将路径下所有文件夹及子文件夹打包
zip workspace.zip -r /workspace/*
# tar命令打包
tar -zcvf CProgram.tar.gz CProgram/
tar可选参数 含义
-z 支持gzip解压文件
-c 建立新的压缩文件
-x 从压缩的文件中提取文件
-v 显示操作过程
-f 指定压缩文件,可以起一个名字

解压

1
2
3
zip workspace.zip

tar -zxvf CProgram.tar.gz

下载

1
2
3
4
# wget + url
wget URL
# 下载后更换文件名 -O(字母大写O)
wget URL -O newName