Linux常用命令总结
一、编辑器
1. vi
# 编辑 test.txt 内容(此时是只读模式)
vi test.txt
i
按i进入编辑模式,此时可以编辑文件内容。ESC
按下此键,输入:
可进入命令模式 ,在命令模式下,有三种命令可以使用:q!
强制退出文件,不保存。q
退出文件。wq
保存文件内容并退出文件。
2. vim
vim
是vi
的升级版本,用法与vi
一致。
二、目录
1. 切换目录
# 切换到某个目录下
cd xxx
# 返回上层目录
cd ..
# 输出当前工作目录
pwd
2. 创建目录
# 创建xxx目录
mkdir xxx
# 创建多层目录
mkdir -p xxx/xxx/xxx
3. 删除目录
# 删除xxx目录
rmdir xxx
# 删除多层目录
rmdir -p xxx/xxx/xxx
4. 移动目录
# 移动test目录到xxx目录下
mv test xxx
三、文件
1. 创建文件
创建文件有三种方式,分别是 vim、touch、cat
# 打开文件,如果该文件不存在则创建
vim test.txt
# 直接创建文件
touch test.txt
# 通过键盘输入创建文件(输入完内容后按Ctrl+c结束)
cat > test.txt
2. 删除文件
rm
[可选项] 文件或目录可选项有:r 表示递归删除,f表示不提示是否删除。
# 删除test.txt文件(不带-r可选项的命令方式不能删除目录)
rm test.txt
# 删除test.txt文件,且不提示是否删除
rm -f test.txt
# 递归删除test目录及目录下的文件,会给出删除提示
rm -r test
# 递归删除test目录且不给出删除提示(慎用)
rm -rf test
3. 复制文件
# 将test.txt文件复制到xxx目录下(xxx目录必须存在)
cp test.txt xxx
# 将test.txt文件复制到a.txt文件中
cp test.txt a.txt
4. 移动文件
# 移动文件test.txt文件到xxx目录下
mv test.txt xxx
# 将test.txt重命名为test_new.txt
mv test.txt test_new.txt
5. 查看文件
# 查看test.txt文件
cat test.txt
# 编辑并查看test.txt文件
vim test.txt
四、系统配置文件
# 查看系统配置文件
cat /etc/profile
# 编辑系统配置文件
vim /etc/profile
# 使系统配置文件生效
source /etc/profile
五、权限
5.1 三种权限
在
linux
系统中,任何一个文件或目录都有 三部分权限,依次分别是:所属用户权限、所属组权限,其他用户权限。而权限又分为三种,分别是:
r
可读(Read)、w
可写(write)、x
可执行(Execute)
5.2 修改文件权限
chmod
用来修改文件或目录的 权限
chmod [-R] [u g o][+-=权限] 文件名或者目录
或者
chmod [-R] [421][421][421] 文件名或者目录 (421分别表示读写可执行权限) 如:chmod 777 文件名
# 赋予a.txt所属用户可执行权限
chmod u+x a.txt
# 移除a.txt所属用户可执行权限
chmod u-x a.txt
# 赋予a.txt的所属用户及所属用户组及其他用户的写权限
chmod +w a.txt
# 移除a.txt的所属用户及所属用户组及其他用户的写权限
chmod -w a.txt
# 赋予a.txt所属用户读写及可执行权限
chmod u=rwx a.txt
# 移除a.txt所属用户的读权限
chmod -r a.txt
# 将/opt目录及其所有文件的可读权限赋予给其他用户
chmod -R o+r /opt/
5.3 修改所属用户及用户组
chown
用来修改文件或目录的 所属用户 (也可以同时修改文件所属的用户组)
chown [-R] 用户名 文件名或者目录
或者
chown [-R] 用户名:用户组 文件名或者目录
# 将a.txt所属用户修改为admin
chown admin a.txt
# 将/opt目录及其所有文件的所属用户修改为admin
chown -R admin /opt/
# 将a.txt所属用户修改为admin,同时将所属用户组修改为root(同时修改用户名和用户组)
chown admin:root a.txt
chgrp
用来修改文件或目录的 所属用户组
chgrp [-R] 用户组 文件名或者目录
# 将a.txt所属用户组修改为admin
chgrp admin a.txt
# 将/opt目录及其所有文件的所属用户组修改为admin
chgrp -R admin /opt/
5.4 用户
# 新增admin用户
useradd admin
# 新增admin用户,同时指定所属用户组wheel
useradd -g wheel admin
# 为admin用户设置密码
passwd admin
# 修改admin用户所属用户组为root
usermod -g root admin
# 删除用户
userdel admin
# 查看用户的相关信息
id 用户名
# 查看所有用户
cat /etc/passwd
5.5 用户组
# 新增aihao用户组
groupadd aihao
# 修改用户组名称
groupmod -n 要修改的用户组名称 新名称
# 将aihao用户组修改为AiHao
groupmod -n aihao AiHao
# 删除aihao用户组
groupdel aihao
# 查看所有用户组
cat /etc/group
5.6 sudo权限
当用户无权限执行某些命令或者无权限操作文件时,如果该用户具有
sudo
权限,则可通过sudo 需要执行的命令
直接执行。用户获取
sudo
权限有两种方式:1、将用户设置成sudo
用户 2、将用户所属的用户组设置为
sudo
组。
# 查看所有拥有sudo权限的用户和用户组,可以通过修改该文件来配置新的sudo用户和用户组。
cat /etc/sudoers
## Allow root to run any commands anywhere
## 允许root用户在任何地方执行任何命令(sudo 需要执行的命令),随后输入用户的密码即可执行。
root ALL=(ALL) ALL
这里可以设置新的sudo权限用户(配置方式如上行)
## Allows people in group wheel to run all commands
## 允许wheel组中的用户执行任何命令(sudo 需要执行的命令),随后输入用户的密码即可执行。
%wheel ALL=(ALL) ALL
这里可以设置新的sudo权限用户组(配置方式如上行)
## Same thing without a password
## 与上面效果一样,同样具有sudo权限。(sudo 需要执行的命令)不同之处在于,无须输入用户密码。
# %wheel ALL=(ALL) NOPASSWD: ALL
六、网络
有的时候需要查询自身机器的
IP
地址或进行其他操作,则此时可以使用ifconfig
命令
# 查看网络相关信息
ifconfig
# 重启网络
systemctl restart NetworkManager
七、其他常用命令
1. ls 和 ll
# 列出当前目录下的所有文件(只列出文件名)
ls
# 列出当前目录下的所有文件及详细信息(修改时间、文件大小、文件权限等)
ls -l
# 等价于ls -l
ll
# 列出当前目录下的所有文件及详细信息,包含隐藏文件
ll -a
2. echo
# 输出系统变量
echo $PATH
# 输出java安装目录
echo $JAVA_HOME
3. > 和 >>
>
和>>
都是把前一个命令的执行结果输出到到另一个文件中,如果该文件不存在,则新建。如果存在,则写入该文件中。注意点:
>
是覆盖写入、>>
是追加写入。
# 将ls执行的结果覆盖写入test.txt文件中
ls > test.txt
# 将ls执行的结果追加写入到test.txt文件中
ls >> test.txt
# 将test.txt中的内容写入到demo.txt中
cat test.txt > demo.txt
# 将运行jar包所输出的控制台内容写入到test.txt中
java -jar demo.jar > test.txt
4. 日期和日历
# 查看当前日期
date
# 查看当前日历
cal
# 查看2020年日历
cal 2020
5. find 命令
find
可查询文件、*
代表通配符。
# 查询test.txt文件
find test.txt
# 查询所有名称中带有test的文件或目录
find *test*
# 查看命令所在路径
which 命令
whereis 命令
6. grep 过滤命令
grep
可以对前一个搜索命令或查看命令的结果,按名称进行过滤。搜索命令 |
grep
[可选项] 过滤条件查看命令 |
grep
[可选项] 过滤条件可选项有:i 表示忽略大小写、n 显示行号
# 查询出含有java名称的进程
ps -ef | grep java
# 查看名称带有test的文件
ls | grep test
# 查看test.txt文件中有关beijing的内容
cat test.txt | grep beijing
7. 压缩和解压相关命令
7.1 gzip 和 gunzip
注意:
gzip
和gunzip
只能压缩或解压单个文件 。
gzip
文件名:压缩单个文件,生成一个.gz
的压缩包,并把原来的文件删除。
gunzip
压缩包名称:解压.gz
压缩包,并把该压缩包删除。
# 压缩单个文件
gzip 文件名
gzip test.txt
# 解压gz文件
gunzip 压缩包名称
gunzip test.txt.gz
7.2 zip 和 unzip
zip
和unzip
可以压缩(打包)或解压多个文件及目录。但是linux
系统中没有该命令,需要额外下载该工具,使用yum install -y zip unzip
可以进行下载安装。
zip
目标压缩包名称(通常用.zip
) 多个文件或目录:压缩多个文件或目录,生成指定名称及后缀的压缩包。
unzip
压缩包名称:解压指定的压缩包。
# 压缩(打包)多个文件和文件夹
zip 目标压缩包名称 多个文件或目录(中间用空格分开)
zip demo.zip test.txt testDir
# 解压到当前目录下
unzip 压缩包名称
unzip demo.zip
# 解压到指定的目录下
unzip 压缩包名称 -d 目录名称
unzip demo.zip -d /opt/test
7.3 tar 命令
tar
[选项] :一个命令即可以完成压缩(打包)和解压多个文件及目录的功能选项有:z表示打包并压缩、c 表示压缩、x表示解压、v表示显示详细信息、f表示指定压缩后的文件名。
tar
-c 目标压缩包名称(通常用.tar.gz
) 多个文件或目录 :压缩多个文件或目录,生成指定名称及后缀的压缩包。
tar
-x 压缩包名称 :解压指定的压缩包。
# 压缩(打包)多个文件和文件夹
tar -zcvf 目标压缩包名称 多个文件或目录(中间用空格分开)
tar -zcvf demo.tar.gz a.txt b.txt test
# 解压到当前目录下
tar -zxvf 压缩包名称
tar -zxvf demo.tar.gz
# 解压到指定的目录下
tar -zxvf 压缩包名称 -C 目录名称
tar -zxvf demo.tar.gz -C /opt/test
8. 软件管理
8.1 RPM包管理
在Linux系统中,都是通过
RPM
来安装和管理软件的,即软件后缀都是.rpm
格式的。
# 安装软件
rpm -ivh mysql-community-common-8.0.25-1.el7.x86_64.rpm
# 查看已经安装的软件
rpm -qa
# 查看已安装的软件,过滤出mysql软件
rpm -qa | grep mysql
# 查看某个软件的安装信息
rpm -qi 软件名
# 卸载软件
rpm -e mysql-community-common-8.0.25-1.el7.x86_64.rpm
或
yum remove mysql-community-common-8.0.25-1.el7.x86_64.rpm # (推荐使用,能够自动卸载依赖包)
8.2 YUM包管理
由于使用
RPM
来安装软件时,有时软件的安装需要依赖于其他RPM安装包
,这时需要我们自己手动去下载并安装,非常的麻烦。因此,产生了YUM包管理工具,在安装软件时,可以自动的去下载安装软件所需要的依赖。
# 查看已经安装的软件
yum list
# 查看某个软件的安装信息
rpm -qi 软件名
# 安装zip和unzip软件工具
yum install zip unzip
# 卸载zip和unzip软件工具
yum remove zip unzip
八、运维常用命令
1. 进程
1.1 查看进程
ps
显示当前系统进程信息
# 只会显示应用进程
ps
# 显示所有进程
ps -e
# 以全格式的形式显示所有进程
ps -ef
# 效果与ps -ef类似,不同在于增加了进程的cpu和内存使用率
ps -aux
# 查看所有与java有关的进程
ps -ef | grep java
1.2 关闭进程
# 根据端口号关闭进程
sudo fuser -k -n tcp 端口号
# 根据进程号关闭进程
kill -9 PID(进程号)
2. 服务
服务是支持
linux
系统的一些必要程序,本质上也是一种进程,叫守护进程。相当于windows
中的services.msc
linux
操作服务:systemctl
[start | stop | restart | reload | status] 服务名称
windows
操作服务:net
[start | stop ] 服务名称
# 显示系统的所有服务信息
systemctl
# 显示系统的所有服务信息(开机自启与否)
systemctl list-unit-files
# 查看mysql的运行状态
systemctl status mysqld
# 关闭mysql服务
systemctl stop mysqld
# 开启mysql服务
systemctl start mysqld
3. 查看端口占用情况
# 查看当前系统端口占用情况
netstat -ant
4. 查看CPU占用情况
# 查看CPU占用情况
top
5. 查看内存使用情况
# 查看内存使用情况
free -mh
6. 清除系统缓存
# 清除系统缓存
echo 3 > /proc/sys/vm/drop_caches
7. 定时任务
# 查看并编辑定时任务
crontab -e
#定时任务格式: 分 时 日 月 周 待执行的脚本 (* * * * * /home/my.sh )
# 查看并编辑root账户下的定时任务
crontab -u root -e
8. 后台运行程序包
我们在部署项目到服务器的时候,常常需要让程序一直在后台运行,比如运行
jar
包程序等。
# 后台运行demo.jar程序,并将程序执行的输出内容覆盖写入到log.txt中
nohup java -jar demo.jar > log.txt &
# 后台运行demo.jar程序,并指定dev环境运行。
nohup java -jar demo.jar --spring.profiles.active=dev &
9. nginx
# 启动nginx进程,在sbin目录下运行./nginx即可启动nginx
./nginx
# 停止nginx进程,先找出nginx的进程ID,再杀死
ps -ef | grep nginx
kill -9 进程ID
# 重启nginx进程
./nginx -s reload