跳至主要內容

Linux 基础命令

知识库编程技巧CentOSLinux大约 7 分钟

Linux 命令大全(手册):https://www.linuxcool.com/open in new window

1、基本操作

2、磁盘,文件,目录

3、检索相关

4、网络相关

4.1 本机ip地址

/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

端口问题

netstat -ntlp                           # 所有正在使用的端口及关联的进程/应用
netstat -lnp|grep 8080                  # 查看到8080端口正在被哪个进程使用
lsof -i :8080                           # 直接列出8080端口听使用进程/应用

网络配置

# ifcfg-ens33可变,根据自己的网卡
vi /etc/sysconfig/network-scripts/ifcfg-ens33
# 重启网卡
systemctl restart network

查看磁盘, 文件目录基本信息

# 查看磁盘挂载情况
mount

# 查看磁盘分区信息
df

# 查看目录及子目录大小
du -H -h

# 查看当前目录下各个文件, 文件夹占了多少空间, 不会递归
du -sh *

强制关闭进程名包含xxx的所有进程

ps aux|grep xxx | grep -v grep | awk '{print $2}' | xargs kill -9

查看系统,CPU信息

# 查看系统内核信息
uname -a

# 查看系统内核版本
cat /proc/version

# 查看当前用户环境变量
env

cat /proc/cpuinfo

# 查看有几个逻辑cpu, 包括cpu型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

# 查看有几颗cpu,每颗分别是几核
cat /proc/cpuinfo | grep physical | uniq -c

# 查看当前CPU运行在32bit还是64bit模式下, 如果是运行在32bit下也不代表CPU不支持64bit
getconf LONG_BIT

# 结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit
cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

防火墙 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