Linux 基础命令
大约 6 分钟
Linux 命令大全(手册):https://www.linuxcool.com/
端口问题
netstat -ntlp # 所有正在使用的端口及关联的进程/应用
netstat -lnp|grep 8080 # 查看到8080端口正在被哪个进程使用
lsof -i :8080 # 直接列出8080端口听使用进程/应用
网络配置
# ifcfg-ens33可变,根据自己的网卡
vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 重启网卡
systemctl restart network
防火墙 firewalld
# 安装防火墙
yum install firewalld systemd -y
# 状态|启动|停止|重启|开机自启|禁止开机自启
systemctl {status|start|stop|restart|enable|disable} firewalld.service
service firewalld {status|start|stop|restart|enable|disable}
# 添加http服务到firewalld,pemmanent表示永久生效,若不加--permanent系统下次启动后就会失效。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
# 重新加载防火墙
sudo systemctl reload firewalld
systemct list-enabled firewalld.service # 查看服务是否开机启动:
systemctl list-unit-files | grep enabled # 查看已启动的服务列表:
systemctl --failed # 查看启动失败的服务列表:
firewall-cmd --version # 查看版本:
firewall-cmd --help # 查看帮助:
firewall-cmd --state # 显示状态:
firewall-cmd --zone=public --list-ports # 查看所有打开的端口:
firewall-cmd --list-services # 查看所有服务:
firewall-cmd --get-services # 查看还有哪些服务可以打开:
firewall-cmd --reload # 更新防火墙规则:
firewall-cmd --get-active-zones # 查看区域信息:
firewall-cmd --get-zone-of-interface=ens33 # 查看指定接口所属区域:
firewall-cmd --panic-on # 拒绝所有包:
firewall-cmd --panic-off # 取消拒绝状态:
firewall-cmd --query-panic # 查看是否拒绝:
firewall-cmd --zone=public --add-port=80/tcp --permanent # 开放指定端口
firewall-cmd --reload # 重新载入
firewall-cmd --zone=public --query-port=80/tcp # 查看指定端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent # 取消开放指定端口
## 开启防火墙
systemctl start firewalld.service
## 防火墙开机启动
systemctl enable firewalld.service
## 关闭防火墙
systemctl stop firewalld.service
## 查看防火墙状态
firewall-cmd --state
## 查看现有的规则
iptables -nL
## 重载防火墙配置
firewall-cmd --reload
## 添加单个单端口
firewall-cmd --permanent --zone=public --add-port=81/tcp
## 添加多个端口
firewall-cmd --permanent --zone=public --add-port=8080-8083/tcp
## 删除某个端口
firewall-cmd --permanent --zone=public --remove-port=81/tcp
## 针对某个 IP开放端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="6379" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.233" accept"
## 删除某个IP
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.1.51" accept"
## 针对一个ip段访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.0/16" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="9200" accept"
## 添加操作后别忘了执行重载
firewall-cmd --reload
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.180.0/16" accept"
firewall-cmd --reload
systemctl
# 基本操作
systemctl status|start|stop|restart|enable|disable firewalld
# 检查开机是否启动该服务
systemctl is-enabled httpd.service
# 列出所有激活的单元
systemctl list-units
# 列出所有活动的服务
systemctl list-units -t service
# 列出所有激活的target
systemctl list-units -t target
# 关闭系统,重启或进入休眠状态。
systemctl poweroff|reboot|hibernate
# 管理远程系统
systemctl status httpd -H root@192.168.0.12
# systemd有自己的日志系统,称为journald。
journalctl
# 查看所有引导消息
journalctl -b
# 以下命令实时跟踪系统日志(类似于tail -f)
journalctl -f
# 查询系统启动过程的持续时间
systemd-analyze
# 查看服务的启动时间
systemd-analyze blame
# 查看主机名称
hostnamectl
service 文件示例
cloudserver-solr.service
# /usr/lib/systemd/system/cloudserver-solr.service
[Unit]
Description=CloudServer Solr Index Service
After=syslog.target network.target remote-fs.target nss-lookup.target
Before=cloudserver.service
[Service]
PIDFile=/opt/cloudserver/app/solr/bin/solr-8985.pid
ExecStart=/bin/bash -c 'source /opt/cloudserver/bin/cloudserver-envs; /opt/cloudserver/app/solr/bin/solr start -force'
#User=solr
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
LimitNOFILE=65000
LimitNPROC=65000
[Install]
WantedBy=multi-user.target
系统命令
uname -m # 显示机器的处理器架构
uname -r # 显示正在使用的内核版本
arch # 显示机器的处理器架构
uname -m # 显示机器的处理器架构
head -n 1 /etc/issue # 查看操作系统版本
cat /proc/cpuinfo # 显示CPU info的信息
cat /proc/meminfo # 校验内存使用
cat /proc/version # 显示内核的版本
cat /proc/loadavg # 查看系统负载
cal 2022 # 显示2022年的日历表
free -m # 查看内存使用量和交换区使用量
df -h # 显示已经挂载的分区列表
du -sh # 查看指定目录的大小
fdisk -l # 查看所有分区
chkconfig -list # 列出所有系统服务
last # 查看用户登录日志
netstat -lntp # 查看所有监听端口
查看文件内容
cat file1 # 从第一个字节开始正向查看文件的内容
tac file1 # 从最后一行开始反向查看一个文件的内容
more file1 # 查看一个长文件的内容
less file1 # 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作
head -2 file1 # 查看一个文件的前两行
tail -2 file1 # 查看一个文件的最后两行
tail -f info.log # 实时查看被添加到一个文件中的内容
文本处理
sed -i 's/stringa1/stringa2/g' example.txt # 将example.txt文件中的 "string1" 替换成 "string2"
sed -i '/^$/d' example.txt # 从example.txt文件中删除所有空白行
sed -i '/ *#/d; /^$/d' example.txt # 从example.txt文件中删除所有注释和空白行
sed -e 's/ *$//' example.txt # 删除每一行最后的空白字符
打包和压缩文件
tar -czvf test.tar.gz test/ # 压缩 a和c文件为test.tar.gz
tar -tzvf test.tar.gz # 列出压缩文件内容
tar -xzvf test.tar.gz # 解压文件
tar cvf test/ # 压缩
tar xvf test.tar # 解压
gunzip test.gz # 解压
gzip -d test.gz # 解压
gzip test/ # 压缩
zip -q -r test/ # 压缩成zip格式
unzip renwolesshel.zip # 解压zip格式的压缩包
xz -z node.tar # 压缩
xz -d node.tar.xz # 解压
## https://www.rarlab.com/download.htm
# wget https://www.rarlab.com/rar/rarlinux-x64-610.tar.gz --no-check-certificate
# tar -xzvf rarlinux-x64-610.tar.gz -C /usr/local/lib/
# ln -s /usr/local/lib/rar/rar /usr/local/bin/rar
# ln -s /usr/local/lib/rar/unrar /usr/local/bin/unrar
unrar x FileName.rar # 解压
rar a test/ # 压缩
bzip2 -d test.bz2 # 解压
bunzip2 test.bz2 # 解压
bzip2 -z test/ # 压缩
RPM 包
rpm -ivh package.rpm # 安装一个rpm包
rpm -ivh --nodeeps package.rpm # 安装一个rpm包而忽略依赖关系警告
rpm -U package.rpm # 更新一个rpm包但不改变其配置文件
rpm -F package.rpm # 更新一个确定已经安装的rpm包
rpm -e package_name.rpm # 删除一个rpm包
rpm -qa # 显示系统中所有已经安装的rpm包
rpm -qa | grep httpd # 显示所有名称中包含 "httpd" 字样的rpm包
YUM
yum list # 列出当前系统中安装的所有包
yum clean packages # 清理rpm缓存删除下载的包
yum clean headers # 删除所有头文件
yum clean all # 删除所有缓存的包和头文件
deb 包
dpkg -i package.deb # 安装/更新一个 deb 包
dpkg -r package_name # 从系统删除一个 deb 包
dpkg -l # 显示系统中所有已经安装的 deb 包
dpkg -l | grep httpd # 显示所有名称中包含 "httpd" 字样的deb包
apt-get update # 升级列表中的软件包
apt-get clean # 从下载的软件包中清理缓存
ntpdate 同步更新时间
yum install ntpdate -y
# 网络时间同步命令 -u参数可以越过防火墙与主机同步
ntpdate -u cn.pool.ntp.org
# ntp常用服务器
cn.pool.ntp.org 中国开源免费NTP服务器
ntp1.aliyun.com 阿里云NTP服务器
ntp2.aliyun.com 阿里云NTP服务器
time1.aliyun.com 阿里云NTP服务器
time2.aliyun.com 阿里云NTP服务器
# 加入crontab
echo "*/20 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com >/dev/null &" >> /var/spool/cron/root
Ubuntu
## 阿里云 http://mirrors.aliyun.com/ubuntu-releases/18.04/
## 中科大源 http://mirrors.ustc.edu.cn/ubuntu-releases/18.04/
## 上交源 http://ftp.sjtu.edu.cn/ubuntu-cd/18.04/
## 清华源 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cdimage/ubuntu/releases/18.04/release/
创建普通用户
## 创建yunwei组
groupadd -g 1090 yunwei
## 创建yunwei用户
useradd -g yunwei -u 1090 yunwei
## 设置yunwei密码
echo "123456Aa@" | passwd --stdin yunwei