当前位置: 首页 > article >正文

二、Linux 系统命令

一、系统命令

# 清屏 (Ctrl + L)
$ clear

# 退出登录	
$ exit		

# 历史命令
$ history		
$ history | grep 'java -jar'	

1. 系统信息

# 查看版本,当前操作系统发行版信息
$ cat /etc/redhat-release 
`
CentOS Linux release 7.2.1511 (Core) 
`

# 查看操作系统位数
$ getconf LONG_BIT
`
64
`

2. hostname 查看当前主机名

  • 修改主机名
  1. vim /etc/hostname
  2. vi /etc/sysconfig/network
$ hostname
`
qs
`

# 查看 IP 
$ hostname -i
`
192.168.137.2
`
$ hostname -I
`
192.168.31.43 192.168.122.1 172.17.0.1
`

# 查看 Ip
$ ifconfig

3. uname 查看系统版本信息

# 查看 当前操作 版本信息
$ cat /proc/version
`
Linux version 3.10.0-514.26.2.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Tue Jul 4 15:04:05 UTC 2017
`

# 查看操作系统
$ cat /etc/redhat-release 
`
CentOS Linux release 8.4.2105
`
uname
`
Linux
`

## 查看当前系统 内核版本
uname -r
`
3.10.0-514.26.2.el7.x86_64
`

## 查看当前系统 内核信息
uname -a
`
Linux qs 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
`
## Linux: 内核名称(类别)
## qs: 主机名
## 3.10.0-514.26.2.el7.x86_64: 内核版本号
## UTC: 内核版本
## 2017: 内核编译日期
## x86_64: 硬件名
## x86_64: 处理器类型
## x86_64: 硬件平台类型
## GNU/Linux: 操作系统名称

uname -an
`
Linux qs 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue Jul 4 15:04:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
`

3. 关机重启

## 1. 查看系统使用状态(确保没人在线)
## 显示当前 所有的登录用户 
who

## 2. 网络状态(确认有哪些连接)
netsat -a

## 3. 后台进程执行状态
## 注:列 COMMAND 带`[.]`的是内核进程,不带`[.]`的是用户态进程 
ps -aux

## 4. 数据同步
## 虽然关机命令会执行同步动作,但仍强烈建议先多次执行 sync 主动同步
sync;sync;sync;

1. shutdown 关机重启
shutdown [Options] 时间

---

## [Options]
## 1. -c: 取消前一个关机命令
## 2. -h: 关机
## 3. -r: 重启

---

## 立即关机(root 用户使用)
shutdown -h now
## 过 30 分钟后自动关机
shutdown -h 30

---

## 立即重启(root 用户使用)
shutdown -r now
## 过 30 分钟自动重启(root 用户使用)
shutdown -r 30
## 在时间为`17:30`时候重启
shutdown -r 17:30
## 在时间为`00:30`时候重启(root 用户使用)
shutdown -r 00:30 	

2. halt 关机重启
  • 其他关机命令(不太安全,不建议使用)
## 最简单的关机命令,实际调用的是`shutdown -h`
## `halt`执行时将杀死应用进程,执行`sync`系统调用文件系统写操作完成后就会停止内核
halt [Options]

---

## [Options]
## 1. -n: 防止`sync`系统调用,在用`fsck`修补根分区之后,以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块
## 2. -w: 并不是真正的重启或关机,只是写`wtmp〔/var/log/wtmp〕`纪录
## 3. -d: 不写`wtmp`纪录〔已包含在选项[-n]中〕
## 4. -f: 没有调用`shutdown`而强制关机或重启
## 5. -i: 关机〔或重启〕前关掉所有的网络接口
## 6. -p: 该选项为缺省选项。就是关机时调用 poweroff

---

## 关机
init 0
## 重启
init 6

---

## 系统运行级别
0 关机
1 单用户
2 不完全多用户,不含 NFS 服务
3 完全多用户
4 未分配
5 图形界面
6 重启

3. poweroff 关机
## 关机
poweroff

4. reboot 安全重启
## 重启(安全)
## `reboot`命令和`shutdown`命令差不多
reboot
reboot -f

## 使用`man reboot`时,会同时出现`halt、poweroff、reboot`的用法
man reboot

5. 退出登录
## 修改系统默认运行级别
cat /ect/inittab
`
id:3:initdefalult
`

## 查询系统运行级别
runlevel

## 退出登录
logout

2. 系统时间

## 当前系统时间
date        
## 当前系统时间,带时区                    
date -R
## 当前系统时间-格式化
date +"%Y-%m-%d %H:%M:%S"   

在这里插入图片描述


1. 设置时间
## 设置系统时间
sudo date -s "2014-01-01 10:10:10"
## 1. -s: 设置系统时间
## 格式: HH:MM:SS(24小时制)
## 格式: hh:mm:ss(12小时制) hh时mm分ss秒
## 格式: MMDDhhmm[[CC]YY][.ss] MM月DD日CC世纪YY年份后两位
sudo date -s "0412122323" # 2023年04月12日


# 同步服务器时间
sudo ntpdate -u ntp.api.bz

2. 设置时区
## 查看时区
date -R

## 方法1. 设置时区
sudo timedatectl set-timezone Asia/Shanghai
## 方法2. 设置时区
tzselect
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

## 查看时区
date -R

在这里插入图片描述


3. 防火墙

1. 安装
yum install firewalld

2. 启动关闭
  1. CentOS
## 查看防火墙状态
systemctl status firewalld			

## 开启关闭防火墙服务
systemctl start firewalld.service
## 临时关闭	
systemctl stop firewalld.service 	
systemctl stop firewalld 
## 然后 reboot 永久关闭
systemctl disable firewalld
## 关闭防火墙
service iptables stop	
## 永久关闭防火墙
chkconfig iptables off	

## 开机自启动防火墙服务
systemctl enable firewalld.service	
## 关闭开机自启动防火墙服务
systemctl disable firewalld.service	
  1. Ubantu
## 安装防火墙
sudo sudo apt-get install ufw

## 查看防火墙版本
sudo ufw version
## 查看防火墙状态
sudo ufw status
`
Status: active # 活跃
Status: inactive # 不活跃
`

## 开启防火墙
sudo ufw enable

## 关闭防火墙 
sudo ufw disable

## 重启防火墙
sudo ufw reload
## 注意:添加规则以后,需要使用该命令进行重启防火墙
## 设置默认允许外部访问本机
sudo ufw default allow

## 设置默认拒绝外部访问主机
## 拒接所有外来访问,本机能正常访问外部
sudo ufw default deny

## 允许外部访问 53 端口
sudo ufw allow 53
## 注意:开放成功以后,需要重启生效
## 查看 53 端口信息
sudo netstat -tunlp | grep 53
## 拒绝外部访问 53 端口
sudo ufw deny 53

## 允许 某个IP 访问本机所有端口
sudo ufw allow from 192.168.0.1

3. firewall-cmd 命令
## 查看防火墙状态,`running`运行,`not running`关闭
firewall-cmd --state	
## 获取活动的区域			
firewall-cmd --get-active-zones

## 获取所有支持的服务(每个服务以空格分隔)		
firewall-cmd --get-service			
## 获取所有永久支持的服务,就是重启后也支持的
firewall-cmd --get-service --permanent	

## 在 0.3.0 之前的 FirewallD版本中,panic 选项是 –enable-panic 与 –disable-panic
## 查看应急模式的状态
firewall-cmd --query-panic	
## 开启应急模式阻断所有网络连接		
firewall-cmd --panic-on		
## 关闭应急模式		
firewall-cmd --panic-off			

## 防火墙预定义的服务配置文件是xml文件,目录在`/etc/firewalld/services/`、`/usr/lib/firewalld/services/`
## 修改配置文件后,使用命令重新加载
firewall-cmd --reload				

4. 修改服务
# 查看开启的服务,服务空格隔开(例如: dhcpv6-client https ss)
firewall-cmd --permanent --zone=public --list-services	
firewall-cmd --permanent --list-services

# 启用某个服务
firewall-cmd --zone=public --add-service=https				# 临时
firewall-cmd --permanent --zone=public --add-service=https	# 永久
firewall-cmd --permanent --zone=public --add-service=ftp	# 永久添加 ftp 服务 
firewall-cmd --reload										# 重启防火墙

5. 修改端口
# 查看开启的端口,端口空格隔开(例如: 8080-8081/tcp 8388/tcp 80/tcp)
firewall-cmd --permanent --zone=public --list-ports 
# 查看开启的端口号	
firewall-cmd --permanent --list-ports  
# 查询8080端口是否开放
firewall-cmd --query-port=8080/tcp

# 开启某个端口
firewall-cmd  --zone=public --add-port=8080-8081/tcp 			# 临时(8080-8081)
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp	# 永久
firewall-cmd --permanent --zone=public --add-port=21/tcp 		# 永久添加tcp 21 端口
firewall-cmd --permanent --add-port =8080-8085/tcp				# 添加8080-8085的端口区段,也可以是固定值,如3000

# 关闭上面设置的端口
firewall-cmd --permanent --remove-port=8080-8085/tcp	# 需要注意的是,如果是加的区段值,删的时候也必须为区段值
firewall-cmd --reload									# 使用命令加载设置

6. 修改规则
# 3. 添加规则: 设置某个ip,访问某个服务(ip:192.168.0.4/24,访问:http)
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4"  source address="192.168.0.4/24" service name="http" accept"
# 删除上面设置的规则
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4"  source address="192.168.0.4/24" service name="http" accept"
  1. 在每次修改 服务、端口 和 规则 后 /etc/firewalld/zones/public.xml文件就会被修改。
  2. 所以也可以 修改文件,然后重新加载。
    在这里插入图片描述

7. 端口转发
# 1. 先开启允许伪装IP
# 检查是否允许伪装IP
firewall-cmd --query-masquerade 

# 允许防火墙伪装IP	
firewall-cmd --add-masquerade   	

# 禁止防火墙伪装IP
firewall-cmd --remove-masquerade	

# 2. 设置转发
# 转发tcp 22 端口至 3753	
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=3753	

# 转发 22 端口数据至另一个 ip 的相同端口上
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toaddr=192.168.1.100	

# 转发 22 端口数据至另一 ip 的 2055 端口上		
firewall-cmd --zone=public --add-forward-port=port=22:proto=tcp:toport=2055:toaddr=192.168.1.100	

4. openssl

openssl version

二、用户和用户组

# 查看系统使用状态(确保没人在线)
# 显示当前 所有的登录用户 

id <用户名>

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

1. 用户

## 查看所有用户
cat /etc/passwd

## 显示所有可用的命令,别名和函数
compgen -u

1. 创建用户
## 新增用户
useradd 用户名
passwd 用户名
## 添加用户`test`
useradd test
## 为用户`test`设置密码
passwd test

---

## 创建用户`test`,并指定用户目录     		
useradd test -d /home/test

---

## 新建用户`qs`
## 添加到用户组`root`
## 但是不允许用户登录,仅仅可以`ftp`登录
## `ftp`登录后的默认目录是`/home/data` 
useradd -g root -d /home/data -s /sbin/nologin qs 

1. 用户文件 /etc/passwd
## 用户文件 
cat /etc/passwd

---

# 每条记录用冒号分隔(包含7个字段)
'root:x:0:0:root:/root:/bin/bash'
## 账号名称(root): 在系统中是唯一的(字符长度 1~12 个字符)
## 用户密码(x): 此字段存放加密口令(保存在`/etc/shadow`文件中)
## 用户标识码(UserID): 系统内部用它来标示用户
## 组标识码(GroupID): 系统内部用它来标识用户组(保存在`/etc/group`文件中) 
## 用户相关信息(root): 例如用户全名等 
## 用户目录: 用户登录系统后所进入的目录(家目录)
## 用户环境: 用户工作的环境(用户使用的 shell 类型)

---

## 使用 awk 或 cut 命令,仅打印出 Linux 系统中所有用户的用户名列表
awk -F':' '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd

2. 用户密码文件 /etc/shadow
## 密码文件    
cat /etc/shadow

---

# 每条记录用冒号分隔,9个字段组成
'mysql:!:19112:0:99999:7:::'
## 用户名: 用户登录到系统时使用的名字,而且是惟一的 
## 口令: 存放加密的口令 
## 最后一次修改时间: 标识从某一时刻起到用户最后一次修改时间 
## 最大时间间隔: 口令保持有效的最大天数,即多少天后必须修改口令 
## 最小时间间隔: 再次修改口令之间的最小天数 
## 警告时间: 从系统开始警告到口令正式失效的天数 
## 不活动时间: 口令过期少天后,该账号被禁用 
## 失效时间: 指示口令失效的绝对天数(从1970年1月1日开始计算)
## 标志: 未使用 

3. sudo 权限文件 /etc/sudoers
# 增加 sudo 权限
vim /etc/sudoers

## 修改文件里面的
#root ALL=(ALL) ALL
#用户名 ALL=(ALL) ALL

2. 删除用户
# 删除用户`test`,不会删除用户目录
userdel test    

# 删除用户`test`,以及用户目录       		
userdel –r test                		

3. 切换用户
## 切换用户`test`              
su test  

## 切换用户`test`,并切换`用户环境`【推荐使用】				
su - test

# 退出
Ctrl+D

# 查看用户的`UID`和`GID`
id '用户名'							
## /usr/local/suninfo/oma/oma/third/openssh/bin/ssh.exe 

## 切换远程用户
ssh -l test -p 22 192.168.19.128
ssh -p 22 root@192.168.100.101

4. 修改密码
# 修改 root 密码
sudo passwd root

2. 用户组

  • 当在创建一个新用户 user 时,若没有指定他所属于的组。就建立一个和该用户同名的私有组。
  • 创建用户时,也可以指定所在组并创建。
# 当前登录用户所属所有组列表
groups

1. 创建用户组
## 创建用户组`public`
groupadd public      

## 创建用户并指定组    
useradd user1 –g public

1. 用户组文件
# 组信息文件   
cat /etc/group  

---

'root:x:0:'
## 组名: 用户所属组 
## 组口令: 一般不用GID(组ID) 
## 用户列表: 属于该组的所有用户

2. 用户组密码文件
cat /etc/gshadow

---

'mysql:!::'

2. 删除用户组
## 如果该组有用户成员,必须先删除用户才能删除组
groupdel public

3. last 最近登录信息列表

## 最近登录的 5 个账号
last -n 5

http://www.kler.cn/news/362163.html

相关文章:

  • 【Vue.js 3.0】Vue.js 中使用 Component 动态组件
  • Windows系统启动MongoDB报错无法连接服务器
  • ArcGIS002:软件自定义设置
  • 清朝笔记()
  • 【目标检测2024】DetCLIP
  • 达梦数据库DEXP/DIMP逻辑备份还原
  • c++ 对象作用域
  • 代码随想录算法训练营第十九天|Day19二叉树
  • Python包——numpy2
  • 6,000 个网站上的假 WordPress 插件提示用户安装恶意软件
  • 前端 js 处理一个数组 展示成层级下拉样式
  • 理解和解决TCP 网络编程中的粘包与拆包问题
  • 【C++】创建TCP服务端
  • DLNA—— 开启智能生活多媒体共享新时代
  • 线性可分支持向量机的原理推导 9-23拉格朗日乘子α的最大化问题 公式解析
  • Spring中导致事务传播失效的情况(自调用、方法访问权限、异常处理不当、传播类型选择错误等。在实际开发中,务必确保事务方法正确配置)
  • 回溯法求解简单组合优化问题
  • 初学者怎么入门大语言模型(LLM)?
  • 微积分复习笔记 Calculus Volume 1 - 3.5 Derivatives of Trigonometric Functions
  • 11.学生成绩管理系统(Java项目基于SpringBoot + Vue)
  • rk3568 , rk3588, rtl8211F , 时钟的问题
  • MySQL--mysql的安装
  • 什么是CI/CD
  • 主机本地IP与公网IP以及虚拟机的适配器和WSL发行版的IP
  • 分布式异步任务框架Celery,如何实现代码实时监控
  • 聊聊黑龙江等保测评