linux常用命令记录

215 阅读7分钟

linux基础命令

linux常用命令大全

查看指定端口

netstat -anp | grep 8800
或者
lsof -i:8080

关闭指定端口的使用程序

kill -9 PID号

Ubuntu

# 查看Ubuntu版本
lsb_release -a

# 查看 `/etc/lsb-release` 文件,该文件与 `lsb_release` 命令输出对应,内容更简洁
cat /etc/lsb-release

vim操作

删除行

在Vim中删除一行的命令是dd。

以下是删除行的分步说明:

1、按Esc键进入正常模式。

2、将光标放在要删除的行上。

3、键入dd并按E​​nter键以删除该行。

注:多次按dd将删除多行。

删除多行

要一次删除多行,请在dd命令前添加要删除的行数,例如,要删除五行,请执行以下操作:

1、按Esc键进入正常模式。

2、将光标放在要删除的第一行上。

3、键入5dd并按E​​nter键以删除接下来的五行。

退出命令是,按ESC键 跳到命令模式,然后输入:q(不保存)或者:wq(保存) 退出。 更多退出命令:

:w 保存文件但不退出vi

:w file 将修改另外保存到file中,不退出vi

:w! 强制保存,不推出vi

:wq 保存文件并退出vi

:wq! 强制保存文件,并退出vi

:q 不保存文件,退出vi

:q! 不保存文件,强制退出vi

:e! 放弃所有修改,从上次保存文件开始再编辑命令历史

文件操作

使用xshell来操作服务非常方便,传文件也比较方便。

就是使用rz,sz

首先,服务器要安装了rz,sz

yum install lrzsz

当然你的本地windows主机也通过ssh连接了linux服务器

运行rz,会将windows的文件传到linux服务器

运行sz filename,会将文件下载到windows本地

# 文件创建时间
stat fileName.txt
# 复制单个文件
# cp 源文件 目标文件夹
cp file.txt backup
# 复制多个文件
cp file1.txt file2.txt file3.txt backup

# 将一个文件夹下的所有内容复制到另一个文件夹下,这两种方法效果是一样的。
cp -r /home/packageA/* /home/cp/packageB/
cp -r /home/packageA/. /home/cp/packageB/

# 将一个文件夹复制到另一个文件夹下
cp -r /home/packageA /home/packageB

# 移动一个文件夹到另一个文件夹下面,这两种方法效果是一样的。
mv /home/packageA /home/packageB/
mv /home/packageA /home/packageB

Nginx常用指令

# 检查nginx.conf配置是否正确,也可以查看配置文件 nginx.conf 路径
 sudo nginx -t
 
 # 查看Nginx服务器的状态
 sudo systemctl status nginx
 
 # 停止Nginx
 sudo systemctl stop nginx

 # 启动Nginx
 sudo systemctl start nginx

 # Nginx重启
 sudo systemctl reload nginx

MySQL相关

# 查看MySQL服务状态
systemctl status mysql.service

显示如下结果说明mysql服务是正常的: 在这里插入图片描述

# 启动MySQL
service mysql start

# 授权用户
grant all ON *.* to ****@'%' identified by '*******' with grant option;
grant all ON *.* to ****@'%' identified by '*******' with grant option;

数据库备份 相关参考: 在Ubuntu/Linux中自动备份MySQL数据库 mysqldump: [Warning] Using a password on the command line interface can be insecure问题原因及解决方法

# 使用mysqldump命令进行备份
mysqldump --defaults-extra-file=/etc/my.cnf blog01 > /home/abcd.sql

# 导入/恢复数据库
mysql --defaults-extra-file=/etc/my.cnf blog0101 < /home/test0101.sql

# 给备份程序添加操作权限
chmod +x backup_mysql.sh

注意:恢复数据库时,指定的数据库一定要存在(即blog0101必须要存在),否则无法恢复

jar包维护相关

# 单次运行jar包
java -jar xxx.jar

# 永久运行jar包;运行命令后,在同级目录下会出现system.log文件,这个文件就项目的日志文件。
nohup java -jar xxx.jar > system.log 2>&1 &

ps -a可以查看Java程序运行的进程号,用于停止程序,不过当程序有好几个的时候,用命令:ps -ef|grep java这个命令会将搜索Java相关的所有进程号,根据jar包名称找到需要停止的进程号

# 搜索Java相关的所有进程号
ps -ef|grep java

使用命令:kill -9 11759杀死进程,11759是进程号。(PS:杀死进程时一定要注意不要看错了进程号,以免杀错!!) 在这里插入图片描述

shell脚本执行出现奇怪的问题

比如Syntax error: "(" unexpected (expecting "fi")或者start.sh: No such file or directory 一般情况是因为该sh脚本的格式不正确,如果这个脚本在你本地修改过(使用txt、notepad++打开修改),可能在保存的时候会默认把文件的格式保存为: doc格式(windows系统)、mac(苹果系统),那么在上传到xshell(unix系统)后,unix系统是不支持doc(mac)格式的,那么就需要把doc(mac)格式的文件修改为unix格式即可。

用vim打开脚本文件,命令行模式输入

:set ff

在这里插入图片描述 发现出来的是dos 在这里插入图片描述 现在通过命令:set ff=unix设置我们的代码模式

:set ff=unix

:set ff确认一下格式,现在已经修改了 在这里插入图片描述 最后:wq保存退出,再执行脚本就正常了

docker

容器管理

# 查看所有容器列表(包含 正在运行 和 已停止的)
docker ps -a

# 启动容器
docker run -it --name [container-name] [image-name]:[tag] 
docker run -d --name [container-name] [image-name]:[tag]
# 运行时有 **许多参数**,熟记这些参数很重要!
# 参考:https://juejin.cn/post/7387966734617919497?searchId=2025042217010239CAE05544C15683822B#heading-8
 
# 停止容器
docker stop 容器ID/容器名
 
# 重启容器
docker restart 容器ID/容器名
 
# 启动容器
docker start 容器ID/容器名
 
# kill 容器
docker kill 容器ID/容器名
 
# ----------------容器文件拷贝 (无论容器是否开启 都可以进行拷贝)
 
# docker cp 容器ID/名称:文件路径  要拷贝到外部的路径 | 要拷贝到外部的路径  容器ID/名称:文件路径
 
# 从容器内 拷出
docker cp 容器ID/名称: 容器内路径  容器外路径
 
# 示例:
docker cp nginx:/etc/nginx/conf.d /data/applications/nginx/conf/conf.d
 
# 从外部 拷贝文件到容器内
docker  cp 容器外路径 容器ID/名称: 容器内路径
 
# ----------------查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器ID
 
# 示例:
docker logs -f -t --tail 1000 2ab447816a66
 
# ----------------更换容器名
docker rename 容器ID/容器名 新容器名

#进入容器(方式一)
docker exec -it 容器名/容器ID /bin/bash
 
#进入容器(方式二) --- 不推荐使用
docker attach 容器名/容器ID

# 直接退出 (如果没有添加-d 参数(持久化运行容器) 该容器会被关闭 ) 
exit
 
# 优雅退出 (无论是否添加-d 参数 容器都不会被关闭)
Ctrl + p + q

# 删除容器,一般删除前要先stop容器
docker rm [container-id/container-name]

docker文件操作、数据卷

# 假设我们有一个名为my_container的Docker容器,以及一个位于宿主机中的文件/path/to/myfile.txt,我们可以使用以下命令将其复制到Docker容器中:
# 这里的/path/in/container/是你想将文件复制到的容器路径。注意,这个路径必须是已存在的目录。
docker cp /path/to/myfile.txt my_container:/path/in/container/

# 创建数据卷
docker volume create test-data

# 查看数据卷信息
docker volume inspect test-data

[
    {
        "CreatedAt": "2024-05-29T19:04:36+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/test_data/_data",
        "Name": "test_data",
        "Options": null,
        "Scope": "local"
    }
]
#这里的/var/lib/docker/volumes/test_data/_data就是数据卷在宿主机上的路径。

# 查看所有数据卷
docker volume ls

# 删除数据卷
docker volume rm name

镜像管理

# 将容器保存为镜像image
# docker commit <容器ID或名称> <镜像名称>:<标签>
docker commit abc123 my_image:latest

# 可以将镜像image保存为tar文件
# docker save -o <tar文件名>.tar <镜像名称>:<标签>
docker save -o my_image.tar my_image:latest

# 从 image 文件,生成一个正在运行的容器实例
# 注意,`docker container run`命令具有自动抓取 image 文件的功能。如果发现本地没有指定的 image 文件,就会从仓库自动抓取
docker container run hello-world:标签

# 删除镜像
docker rmi [image-name]:[tag]

Docker Compose

# 停止并删除旧容器
docker-compose down

# 启动容器
docker-compose up -d

# 查看 MySQL 日志
docker-compose logs mysql