centos7 系统常用命令-高频率
文件和目录
复制/移动/重命名
# cp -rf 源目录 备份目录 # cp是复制命令, -r 递归处理,指定目录下的文件和子目录一并处理, -f 强行复制,无论目标是否存在
cp -r ./*[^dist] dist # 将当前目录下除dist目录外的目录和文件都复制到dist目录内
cp -r ./!(dist) dist # 将当前目录下除dist目录外的目录和文件都复制到dist目录内
cp file1 file2 # 将file1复制为file2
cp -a dir1 dir2 # 复制一个目录
cp -a /tmp/dir1 . # 复制一个目录到当前工作目录(.代表当前目录)
mkdir dir1 # 创建 'dir1' 目录
mkdir dir1 dir2 # 同时创建两个目录
mkdir -p /tmp/dir1/dir2 # 创建一个目录树
mv dir1 dir2 # 移动/重命名一个目录
rm -f file1 # 删除 'file1'
rm -rf dir1 # 删除 'dir1' 目录及其子目录内容
# du命令是对文件和目录磁盘使用的空间的查看。
查找文件中的某个字符串
grep "要查找的字符串" 文件名 # 在文件中查找字符串
find -name '*.[ch]' | xargs grep -E 'expr' # 在当前目录及其子目录所有.c和.h文件中查找 'expr'
find -type f -print0 | xargs -r0 grep -F 'expr' # 在当前目录及其子目录的常规文件中查找 'expr'
find -maxdepth 1 -type f | xargs grep -F 'expr' # 在当前目录中查找 'expr'
查找文件
find / -name file1 # 从 '/' 开始进入根文件系统查找文件和目录
find / -user user1 # 查找属于用户 'user1' 的文件和目录
find /home/user1 -name \*.bin # 在目录 '/ home/user1' 中查找以 '.bin' 结尾的文件
find /usr/bin -type f -atime +100 # 查找在过去100天内未被使用过的执行文件
find /usr/bin -type f -mtime -10 # 查找在10天内被创建或者修改过的文件
locate \*.ps # 寻找以 '.ps' 结尾的文件,先运行 'updatedb' 命令
查看文件大小
ls # 查看目录中的文件
ls -a # 显示隐藏文件
ls -l # 显示详细信息
ls -lrt # 按时间显示文件(l表示详细列表,r表示反向排序,t表示按时间排序)
pwd # 显示工作路径
du -b filepath # 查看文件大小,其中参数-b表示以字节计数。
du -h filepath # 查看文件大小,其中参数-h表示人性化显示。
压缩/解压缩
.tar.gz
tar -czf front.tar.gz front # 压缩目录
tar xf front.tar.gz -C /opt # 解压目录到/opt目录下
tar xf front.tar.gz --strip-components 1 -C /opt/front2 # 解压到指定的front2目录 (通过 --strip-components 1 参数 解压到指定目录或当前目录(不含打包前原目录))
.zip
unzip file1.zip # 解压文件
unzip file1.zip -d /tmp/ # 解压一个zip格式的压缩包到 /tmp 目录
zip -r file1.zip file1 dir1 # 把文件和目录压缩成一个zip格式的压缩包
.bz2
bunzip2 file1.bz2 # 解压文件
bzip2 file1 # 压缩文件
.gz
gunzip file1.gz # 解压文件
gzip file1 # 压缩文件
.tar
tar -xvf file1.tar # 解压 tar 包
tar -xvf archive.tar -C /tmp # 将压缩包解压到 /tmp 目录下
tar -cvf archive.tar file1 # 压缩为 tar 包 (-c: 建立压缩档案;-v: 显示所有过程;-f: 使用档案名字,是必须的,是最后一个参数)
tar -cvf archive.tar file1 dir1 把 file1,dir1 打包成 archive.tar
tar -tf archive.tar # 查看 tar 包中的内容
权限
chmod -R 777 storage public .env # 修改文件和递归更新目录权限
查看
date # 查看时间
端口
netstat -tuln | grep mysqld # 查看 MySQL 进程监听的端口
# 输出示例:tcp6 0 0 :::40002 :::* LISTEN
查看进程、杀死进程、启动进程
# 1.查进程
# ps命令查找与进程相关的PID号:
# ps a 显示现行终端机下的所有程序,包括其他用户的程序。
# ps -A 显示所有程序。
# ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
# ps -e 此参数的效果和指定"A"参数相同。
# ps e 列出程序时,显示每个程序所使用的环境变量。
# ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
# ps -H 显示树状结构,表示程序间的相互关系。
# ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
# ps s 采用程序信号的格式显示程序状况。
# ps S 列出程序时,包括已中断的子程序资料。
# ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
# ps u 以用户为主的格式来显示程序状况。
# ps x 显示所有程序,不以终端机来区分。
# 最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
# ps aux | grep program_filter_word,ps -ef |grep tomcat
# ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。
# 2.杀进程
# 使用kill命令结束进程:kill xxx
# 常用:kill -9 324
# Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME
# 3.进入到进程的执行文件所在的路径下,执行文件 ./文件名
防火墙
firewall-cmd --list-ports # 查看所有打开的端口
firewall-cmd --zone=public --list-ports # 查看所有打开的端口
firewall-cmd --zone=public --add-port=新端口/tcp --permanent # 添加允许某个端口的流量到特定区域
firewall-cmd --reload # 重新加载防火墙规则
systemctl start firewalld # 关闭防火墙
systemctl stop firewalld # 关闭防火墙
systemctl disable firewalld # 禁止开机启动(测试后需恢复)
nginx
ps -ef|grep nginx # 查看 nginx 进程
ll /proc/2030/exe (2030为master进程ID)# 查看nginx进程的路径
查看nginx安装目录.png
# 安装目录(/opt/bigmw/tengine)下操作:
./sbin/nginx -t # 测试nginx配置文件是否有配置错误
./sbin/nginx -s reload # 重新加载配置(可能需要加上安装目录才能生效 -p )
./sbin/nginx -s reload -p /opt/bigmw/tengine # 重新加载配置(可能需要加上安装目录才能生效 -p )
docker
# 容器
sudo docker ps -a # 查看所有容器
sudo docker compose up -d # 启动容器
sudo docker compose down # 关闭容器
sudo docker exec -it shop-mysql-1 bash
bash# cd /var/www/shop/
bash# mysql -u root -p # 进入mysql
bash# UPDATE mysql.user SET authentication_string=PASSWORD('新强密码') WHERE User='root'; # 修改密码
bash# FLUSH PRIVILEGES; # 刷新权限
bash# exit # 退出容器
# 镜像
sudo docker images -a # 查看所有镜像
sudo docker rmi -f 镜像id # 强制 删除指定镜像 通过 IMAGE ID 删除(推荐)
sudo docker rmi -f nginx:latest # 强制 删除指定镜像 通过 REPOSITORY:TAG 删除
sudo docker image prune -a # 删除所有未被容器使用的镜像
docker rmi -f $(docker images -q) # 删除所有本地镜像
docker rmi $(docker images | grep "test" | awk '{print $3}') # 删除所有包含 "test" 名称的镜像 # 结合 grep 和 awk 筛选镜像
# 注意事项
# 依赖关系:
# 若镜像被容器(即使已停止)引用,需先删除容器:
docker rm 容器ID # 删除容器
# 镜像层级:
# 删除父镜像时,其子镜像会变为悬空(需手动清理)。
# 数据安全:
# 删除镜像后无法恢复,操作前务必确认。
# 定期清理可有效释放磁盘空间!
常用快捷键
Ctrl + a 光标移动到行首(ahead of line),相当于通常的Home键
Ctrl + e 光标移动到行尾(end of line)
Ctrl + r 显示:号提示,根据用户输入查找相关历史命令(reverse-i-search)
# [Tab] 命令行自动补全。使用 shell 提示时可使用这一方式。键入命令或文件名的前几个字符,然后按 [Tab] 键,它会自动补全命令或显示匹配键入字符的所有命令。
# 在桌面或文件管理器中直接按 / 就可以输入位置,打开文件管理器。
# 快速搜索:在 vi 或 Firefox 中直接按 / 即可进入搜索状态。
# 网站链接和图片可直接拖放到桌面或者目录,可以马上下载。
# 直接将文件管理器中的文件拖到终端中就可以在终端中得到完整的路径名。
# 在滚动条的空白处点击鼠标中键,屏幕即滚动到那个地方。
其他
man ping # 查看参考手册(例如ping 命令)
df -h # 显示磁盘的使用情况