Linux基础 - 命令手册
对常用的Linux命令进行分类整理,Windows的命令也有哦
更多命令参考 Linux命令大全 (opens new window)
# 1. 文件操作
# 1.1 文件创建
touch
(创建), nano
(创建或编辑), vi
(创建或编辑), vim
(创建或编辑) 等等
# 1.2 文件查看
cat
, more
, less
, tail
等等
命令 | 说明 |
---|---|
cat | 只能显示最后一屏内容 |
more | 可以显示百分比,回车可以向下一行, 空格可以向下一页,q可以退出查看 |
less | 可以使用键盘上的PgUp和PgDn向上 和向下翻页,q结束查看 |
head -10 | 查看文件的前10行,Ctrl+C结束 |
tail -10 | 查看文件的后10行,Ctrl+C结束 |
注意:命令 tail -f 文件
可以对某个文件进行动态监控,例如tomcat的日志文件,会随着程序的运行,日志会变化,可以使用 tail -f catalina-2016-11-11.log
监控tomcat日志文件 catalina-2016-11-11.log 的变化
# 1.3 文件修改
# vim使用指南
wq/q! (输入wq代表写入内容并退出,即保存;输入q!代表强制退出不保存)
1. 移动光标
命令 | 说明 |
---|---|
vim | 可以使用小写英文字母 h j k l 分别控制光标左 下 上 右移动,也可以使用箭头 |
Ctrl+b | 屏幕往后移动一页 |
Ctrl+f | 屏幕往前移动一页 |
Ctrl+u | 屏幕往后移动半页 |
Ctrl+d | 屏幕往前移动半页 |
Shift+g == G | 移动到文章的最后 |
Shift+4 == $ | 移动到光标所在行的行尾 |
Shift+6 == ^ | 移动到光标所在行的行首 |
w | 光标跳到下个字的开头 |
e | 光标跳到下个字的字尾 |
b | 光标回到上个字的开头 |
#l | 例如:5l ,56l 光标移动到该行的第'#'个位置 |
gg | 进入到文本的开始 |
2. 删除文字
命令 | 说明 |
---|---|
x | 每按一次删除光标所在位置的一个字符 |
#x | 栗子: 6x 删除光标所在位置的"后面"(包含自己在内)6个字符 |
Shift+x == X | 每按一次,删除光标所在位置的前一个字符 |
Shift+#x == #X | 栗子: 20X 删除光标所在位置的前面20个字符 |
dd | 删除光标所在行 |
#dd | 栗子: 6dd 从光标所在行开始删除6行 |
3. 复制
命令 | 说明 |
---|---|
yw | 将光标所在之处到字尾的字符复制到缓冲区中 |
#yw | 栗子: 6yw 复制6个字符到缓冲区 |
yy | 复制光标所在行到缓冲区 |
#yy | 栗子: 6yy 拷贝从光标所在的该行"往下数"6行文字 |
p | 将缓冲区内的字符贴到光标所在位置 |
注意:所有与y有关的复制命令都必须与p配合才能完成复制粘贴功能
4. 替换
命令 | 说明 |
---|---|
r | 替换光标所在处的字符 |
R | 替换光标所到之处的字符,知道按下Esc键为止 |
5. 撤销上一次的操作
命令 | 说明 |
---|---|
u | 回到上一个操作,按动多次'u'可以执行多次回复 |
6. 更改
命令 | 说明 |
---|---|
cw | 更改光标所在处的字到字尾处 |
c#w | 栗子: c3w 表示更改三个字 |
7. 跳至指定行
命令 | 说明 |
---|---|
Ctrl+g | 列出光标所在行的行号 |
#G | 栗子: 15G 表示移动光标到文章的第15行行首 |
# 1.4 文件压缩
Linux中的打包文件一般是以 .tar 结尾的,压缩的文件一般是以 .gz 结尾的。而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般 .tar.gz。
# 1.4.1 打包压缩
# 格式
tar -zcvf xxx.tar.gz xxx
# 示例
# 假设test目录下有三个文件分别是 :aa.txt bb.txt cc.txt,我们要打包test目录并指定压缩后的压缩包名称为test.tar.gz
tar -zcvf test.tar.gz aaa.txt bbb.txt ccc.txt
# 或
tar -zcvf test.tar.gz /test/
2
3
4
5
6
7
8
- z:调用gzip压缩命令进行压缩
- c:打包文件
- v:显示运行过程
- f:指定文件名
# 1.4.2 解压缩
# 格式
tar [-xvf] xxx.tar.gz
# 示例
# 将/test下的test.tar.gz解压到当前目录下可以使用命令
tar -xvf test.tar.gz
# 将/test下的test.tar.gz解压到根目录/usr下。( -C 代表指定解压的位置)
tar -xvf xxx.tar.gz -C /usr
2
3
4
5
6
7
8
9
- x:代表解压
# 2. 权限操作
操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可以对特定的文件进行什么样的操作。
# 2.1 查看文件详情
$ ls -l
total 1508
drwxr-xr-x. 3 root root 4096 Aug 8 2018 abrt
drwxr-xr-x. 4 root root 4096 Aug 8 2018 acpi
-rw-r--r--. 1 root root 16 Aug 8 2018 adjtime
-rw-r--r-- 1 root root 12288 Jan 21 2019 aliases.db
-rw-r-----. 1 root chrony 481 Sep 15 2017 chrony.keys
lrwxrwxrwx. 1 root root 14 Aug 8 2018 system-release -> centos-release
2
3
4
5
6
7
8
文件的类型:
- d: 代表目录
- -: 代表文件
- l: 代表链接(可以认为是window中的快捷方式)
Linux中权限:
- r:代表权限是可读,r也可以用数字4表示
- w:代表权限是可写,w也可以用数字2表示
- x:代表权限是可执行,x也可以用数字1表示
# 2.2 修改文件/目录的权限
# 修改 aa.txt 的权限为属主有全部权限,属主所在的组有读写权限, 其他用户只有读的权限
$ chmod u=rwx,g=rw,o=r aa.txt
# 或使用数字表示
$ chmod 764 aa.txt
2
3
4
5
小技巧: 开机自启动(以 zookeeper 为例)
# 新建一个脚本 zookeeper
$ touch zookeeper
# 为新建的脚本 zookeeper 添加可执行权限
$ chmod +x zookeeper
# 把 zookeeper 这个脚本添加到开机启动项里面
$ chkconfig --add zookeeper
# 看看是否添加成功
$ chkconfig --list
2
3
4
5
6
7
8
9
10
11
# 2.3 用户管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
# 相关命令
$ useradd 选项 用户名:添加用户账号
$ userdel 选项 用户名:删除用户帐号
$ usermod 选项 用户名:修改帐号
$ passwd 用户名:更改或创建用户的密码
$ passwd -S 用户名 :显示用户账号密码信息
$ passwd -d 用户名: 清除用户密码
$ su - 用户名:切换登录用户
2
3
4
5
6
7
8
useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。该文件内容的解释:用户名:密码:用户id:组id:用户说明:用户的主目录:用户使用的shell环境(默认为bash)
passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
# 2.4 用户组的管理
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
# 相关命令
# 增加一个新的用户组
$ groupadd 选项 用户组
# 要删除一个已有的用户组
$ groupdel 用户组
# 修改用户组的属性
$ groupmod 选项 用户组
2
3
4
5
6
7
8
9
10
# 3. 网络相关
# 3.1 设置静态IP
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens33
auto ens33
iface ens33 inet static
address 192.168.88.100
netmask 255.255.255.0
gateway 192.168.88.2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 运维相关命令
# 常用命令
命令 | 说明 |
---|---|
pwd | 显示当前所在位置 |
grep | 要搜索的字符串,要搜索的文件。 --color: 搜索命令,--color代表高亮显示 |
ps -ef / ps aux | 这两个命令都是查看当前系统正在运行进程,两者的区别是展示格式不同。如果想要查看特定的进程可以使用这样的格式:ps aux |
kill -9 进程的pid | 杀死进程(-9 表示强制终止。)先用ps查找进程,然后用kill杀掉 |
ln | 创建链接文件 |
注意:
- 如果直接用
ps
(Process Status)命令,会显示所有进程的状态,通常结合grep
命令查看某进程的状态。 - 创建软链接文件:
ln -s [源文件] [目标文件]
(硬链接不需-s选项)。- 软链接特点:权限是所有人都可以访问,并且软连接文件指向源文件。软链接就像windows系统中的快捷方式一样,特点也都类似。
- 硬链接:类似copy,硬链接大小和源文件一样,并且是同步更新的。
# 端口信息 - netstat
- an: 所有的连接和端口
- tuln: 查看正在监听TCP(t)和UDP(u)的端口 ,例如:
netstat -tuln | grep LISTEN
- rn: 查看网关 route -n
# 其他命令
# 查看进程详细信息(可查看启动的jar包所在的目录), PID是启动的进程ID
$ ll /proc/{PID}
# 查看80端口占用
$ netstat -tunlp |grep 80
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::8080 :::* LISTEN 910/java
tcp6 0 0 :::80 :::* LISTEN 721/apache2
# 递归下载服务器目录
$ scp -r sleepy@192.168.31.245:/home/sleepy/ e:\script
# 递归上传本地目录
$ scp -r script sleepy@192.168.31.17:/home/sleepy
# 解压
$ tar -zxvf xxx.tar.gz
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看正在运行的进程
- ps 命令:
$ ps -f | grep xxx // 匹配xxx关键字进程
常用参数的意义:
- -A:显示所有程序。
- -e:此参数的效果和指定"A"参数同。
- -f:显示UID,PPIP,C与STIME栏位。
各相关字段的意义:
- UID:s程序被该 UID 所拥有
- PID:就是这个程序的 ID
- PPID:则是其上级父程序的ID
- C:CPU使用的资源百分比
- STIME:系统启动时间
- TTY:登入者的终端机位置
- TIME:使用掉的CPU时间。
- CMD:所下达的是什么指令
# Windows命令
# 查看80端口占用
> netstat -aon|findstr "80"
2
# 📂 其他常用命令合集
# 🔍 搜索命令
# 搜索根目录/下所有包含jenkins的记录
$ find / -name jenkins
2
# 🛠 VMware中给Linux 扩容
使用工具 Gparted-live (opens new window)
参考文档: https://www.cnblogs.com/jytx/p/6323550.html
# 👩 将普通用户加 sudo 权限
# 修改 /etc/sudoers 文件, 增加一行指定用户的配置,例如将用户 sleepy 加 sudo 权限
sleepy ALL=(ALL:ALL) ALL
# 然后保存文件即可
2
3
4
5
6
# 🥘 磁盘大小查看
- df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。
- du可以查看文件及文件夹的大小。
# 查看当前系统块的使用情况
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 3.9G 300M 3.4G 8% /
/dev/sda7 100G 188M 95G 1% /data0
/dev/sdb1 133G 80G 47G 64% /data1
/dev/sda6 7.8G 218M 7.2G 3% /var
/dev/sda5 7.8G 166M 7.2G 3% /tmp
/dev/sda3 9.7G 2.5G 6.8G 27% /usr
tmpfs 2.0G 0 2.0G 0% /dev/shm
# 查看文件或文件夹的磁盘使用空间
$ du -h --max-depth=1 work/testing
27M work/testing/logs
35M work/testing
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 👨 查看所有用户
# 方法一、通过 /etc/passwd 文件查看
cat /etc/passwd
# 方法二、通过 compgen 命令查看
compgen -u
2
3
4
5
# 📝 更改文件夹目录权限
# golden-data的目录递归授权给ocean用户
chown -R ocean golden-data
2
# 🤹♂️ 查看所有环境变量
printenv
# 🖇️ 修改 Linux 默认ssh端口
1)修改/etc/ssh/sshd_config文件
# $OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
# 修改port,保存
Port 1022
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2)重启sshd服务
service sshd restart