前言

本篇博客为大家总结了常用的Linux命令,包括文件操作、系统管理、网络配置、软件安装等方面,通过阅读和练习,可以快速掌握Linux命令行技能,提高工作效率。

日志

查看日志

cat logback.log

带行号

cat -n logback.log

查找关键字

cat -n logback.log | grep graceful

查找关键字前后几行

  • 取得关键字行号后:
cat -n logback.log | tail -n +50 | head -n 100

tail -n +50:从文件的第50行往后显示

head -n 100 :显示50行后的100行

  • 另一种方式:
cat -n logback.log | grep graceful -C10  #-C显示前后多少行
cat -n logback.log | grep graceful -A10  #-A显示后多少行
cat -n logback.log | grep graceful -B10  #-B显示前多少行

docker

容器生命周期

创建

docker run --name ${容器} -p ${对外端口}:${容器端口} -d -v ${宿主机目录}:${容器目录} -it --privileged=true --restart unless-stopped -e TZ=Asia/Shanghai ${镜像}

--name:指定容器名字

  • ${容器}:容器名字

-p:是否开放外部端口,可以多个,用多组-p

  • ${对外端口}:映射出来宿主机的端口(默认网络模式host适用)
  • ${容器端口}:容器内部暴露的端口

-v:持久化容器内目录,可以多个,用多组-v

  • ${宿主机目录}:宿主机上的目录
  • ${容器目录}:容器内部的目录

-d:容器后台运行

-it:容器可以执行

-privileged=true:高级权限

--restart unless-stopped:重启的模式,有always总是、never从不(默认)、unless-stopped非手动停止会重启

-e:定义环境变量

  • TZ=Asia/Shanghai:指定时区

${镜像}:需要启动的镜像,如果不写标签默认为lastest

--rm:执行一次就删除

启动

docker start ${容器}

${容器}:容器完整名字或ID,ID可以只写前几个字符

重启

docker restart ${容器}

${容器}:容器完整名字或ID,ID可以只写前几个字符

删除

docker rm -f ${容器}

-f:强行删除容器,如果不带-f删除失败的话可以尝试

${容器}:容器完整名字或ID,ID可以只写前几个字符

日志

docker logs -f ${容器} --tail ${行数}

-f:持续输出日志

${容器}:容器完整名字或ID,ID可以只写前几个字符

${行数}:只看最后几行的日志,防止历史日志过多导致的卡顿

进入容器

docker exec -it ${容器} ${命令}

${容器}:容器完整名字或ID,ID可以只写前几个字符

${命令}:进入容器的默认命令,一般是bashsh

网络

查看端口占用

lsof -i :${port_number}
#或
netstat -tulpn | grep ${port_number}

${port_number}:实际的端口,如80

防火墙

iptables

查看所有防火墙策略

iptables -L -n

更详细的信息

iptables -S

添加防火墙规则

iptables -I INPUT 1 -s ${源IP}/32 -p tcp -m tcp --dport ${端口} -j ACCEPT

${源IP}:认可的来源IP

${端口}:需要打开的端口

删除防火墙规则

# 查看防火墙的行号
iptables -L --line-numbers
# 删除对应行的规则
iptables -D INPUT ${行号}

${行号}:需要删除的防火墙的行号

firewalld

查看防火墙状态

firewall-cmd --state
#或 systemctl status firewalld

查看防火墙规则

firewall-cmd --list-all

关闭防火墙

systemctl stop firewalld

文件

转化换行符

win -> linux

sed -i 's/\r//' ${filename}

linux -> win

sed -i ':label;N;s/\n/;/;b label' ${filename}
sed -i 's/;/\r\n/g' ${filename}

${filename}:文件路径

查找文件

查找执行文件

which ${文件名}
#或
whereis ${文件名}

修改上面的${文件名}

递归查询文件

find ${路径} -name '${文件名}'

${路径}:需要开始递归的路径,如/

${文件名}:需要查找的文件名,如redis,可以使用*进行模糊匹配,如*redis*

一些问题

cannot execute binary file

系统无法执行二进制文件,可能是文件不可执行或系统架构不兼容

ls -l ${文件名}

如果文件没有可执行权限,用下面的命令添加

chmod +x ${文件名}

如果文件有执行权限,则使用下面的命令排查系统架构兼容问题

file ${文件名}

查询当前的系统架构

uname -a

如果文件与系统架构不匹配,则需要下载适合当前系统版本的文件

${文件名}:二进制文件名