一、系统命令
$ clear
$ exit
$ history
$ history | grep 'java -jar'
1. 硬件信息
$ getconf LONG_BIT
`
64
`
2. uname 系统信息
`
-a或--all
-s或--kernel-name
$ uname -s
-n或--nodename
$ uname -n
-r或--kernel-release
$ uname -r
-v或--kernel-version
$ uname -v
-m或--machine
$ uname -m
-p或--processor
-i或--hardware-platform
`
$ uname -a
$ uname -an
`
Linux qs 3.10 .0-514.26.2.el7.x86_64
Linux qsmain 5.15 .0-53-generic
Linux
qsmain
5.15 .0-53-generic
59 -Ubuntu SMP Mon Oct 17 18 :53:30 UTC 2022
x86_64
x86_64
x86_64
GNU/Linux
`
$ uname
`
Linux
`
$ uname -n
`
qsmain
`
$ uname -r
`
5.15 .0-53-generic
`
$ uname -v
`
2022
`
$ uname -m
`
x86_64
`
$ uname -p
`
x86_64
`
$ uname -i
`
x86_64
`
1. /proc/version 系统版本文件
$ 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) )
`
2. /etc/redhat-release [红帽]系统信息
$ cat /etc/redhat-release
`
CentOS Linux release 8.4 .2105
`
3. hostname 主机名
$ hostname
`
qs
`
$ vim /etc/hostname
$ vi /etc/sysconfig/network
$ hostname -i
`
192.168 .137.2
`
$ hostname -I
`
192.168 .31.43 192.168 .122.1 172.17 .0.1
`
$ ifconfig
3. 关机重启
$ sync ; sync ; sync ;
1. shutdown 关机重启【建议】
`
[ 选项]
-c
-h
-r
`
$ shutdown -h now
$ shutdown -h 30
$ shutdown -r now
$ shutdown -r 30
$ shutdown -r 17 :30
$ shutdown -r 00:30
2. reboot 安全重启
$ reboot
$ reboot -f
$ man reboot
3. halt 关机重启
`
-n
-w
-d
-f
-i
-p
`
4. init 关机重启
$ init 0
$ init 6
`
0
1
2
3
4
5
6
`
4. poweroff 关机
$ poweroff
5. 退出登录
$ cat /ect/inittab
`
id:3:initdefalult
`
$ runlevel
$ logout
4. 系统时间
`
-s
`
1. 查看时间
$ date
`
2024 年 12 月 07日 星期六 13 :14:19 CST
`
$ date +"%Y-%m-%d %H:%M:%S"
`
2024 -12-07 13 :15:41
`
$ date +%s
`
1733548669
`
$ date -R
`
Sat, 07 Dec 2024 13 :16:27 +0800
`
$ echo "Current date and time: $( date ) " >> myfile.txt
2. 设置时间
$ date -s "2024-12-10"
$ date -s "15:30:00"
$ sudo date -s "2014-01-01 10:10:10"
`
-s
HH:MM:SS
hh:mm:ss
MMDDhhmm[ [ CC] YY] [ .ss]
`
$ sudo date -s "0412122323"
$ sudo ntpdate -u ntp.api.bz
3. 设置时区
$ date -R
$ sudo timedatectl set-timezone Asia/Shanghai
$ tzselect
$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
$ date -R
5. 防火墙
1. 安装
$ yum install firewalld
2. 启动关闭
CentOS
$ systemctl status firewalld
$ systemctl start firewalld.service
$ systemctl stop firewalld.service
$ systemctl stop firewalld
$ systemctl disable firewalld
$ service iptables stop
$ chkconfig iptables off
$ systemctl enable firewalld.service
$ systemctl disable firewalld.service
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
$ sudo ufw allow 53
$ sudo netstat -tunlp | grep 53
$ sudo ufw deny 53
$ sudo ufw allow from 192.168 .0.1
3. firewall-cmd 命令
$ firewall-cmd --state
$ firewall-cmd --get-active-zones
$ firewall-cmd --get-service
$ firewall-cmd --get-service --permanent
$ firewall-cmd --query-panic
$ firewall-cmd --panic-on
$ firewall-cmd --panic-off
$ firewall-cmd --reload
4. 修改服务
$ 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
$ firewall-cmd --reload
5. 修改端口
$ firewall-cmd --permanent --zone = public --list-ports
$ firewall-cmd --permanent --list-ports
$ firewall-cmd --query-port= 8080 /tcp
$ firewall-cmd --zone = public --add-port= 8080 -8081/tcp
$ firewall-cmd --permanent --zone = public --add-port= 8080 -8081/tcp
$ firewall-cmd --permanent --zone = public --add-port= 21 /tcp
$ firewall-cmd --permanent --add-port = 8080 -8085/tcp
$ firewall-cmd --permanent --remove-port= 8080 -8085/tcp
$ firewall-cmd --reload
6. 修改规则
$ 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"
在每次修改服务、端口和规则后 /etc/firewalld/zones/public.xml
文件就会被修改。 所以也可以修改文件,然后重新加载。
7. 端口转发
$ firewall-cmd --query-masquerade
$ firewall-cmd --add-masquerade
$ firewall-cmd --remove-masquerade
$ firewall-cmd --zone = public --add-forward-port= port= 22 :proto= tcp:toport= 3753
$ firewall-cmd --zone = public --add-forward-port= port= 22 :proto= tcp:toaddr= 192.168 .1.100
$ firewall-cmd --zone = public --add-forward-port= port= 22 :proto= tcp:toport= 2055 :toaddr= 192.168 .1.100
6. openssl
$ openssl version
二、进程命令
ifconfig
sudo ufw allow 53
ulimit -n
1. top、htop
top命令可以实时显示系统的各种资源使用情况,如 CPU 使用率、内存使用率、进程状态等。
htop是top的增强版,提供了更友好的用户界面和更多的功能。
在终端中输入top或htop,会实时显示系统的资源使用情况和进程列表。
通过查看这些信息,可以了解系统的实时运行状态,判断是否存在资源占用过高或异常的进程。
$ top
$ htop
2. netstat、ss
1. netstat
netstat命令用于显示网络连接、路由表和网络接口等信息,通过查看网络连接状态,可以了解系统是否存在外部连接或正在进行的网络活动。
输入netstat -an可以查看所有的网络连接,包括 TCP、UDP 和 UNIX 域套接字等,通过分析连接状态和相关端口,可以判断系统是否存在异常的网络活动或外部连接。
$ sudo netstat [ -选项]
`
-t
-u
-l
-n
-a
`
$ sudo netstat -tuln
`
活跃的互联网连接(服务器和已建立的)
Active Internet connections ( servers and established)
接收 发送 本地 外部 状态
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0 .0.0:81 0.0 .0.0:* LISTEN
tcp 0 0 0.0 .0.0:80 0.0 .0.0:* LISTEN
.. .
`
$ sudo netstat -tuln | grep ':80'
`
tcp 0 0 0.0 .0.0:80 0.0 .0.0:* LISTEN
`
$ sudo netstat -a
$ sudo netstat -tulpn
$ sudo netstat -lnt
2. ss
$ sudo ss -tuln
$ sudo ss -tuln | grep ':443'
$ sudo ss -tlnp | grep < 端口号>
4. lsof
是一个列出当前系统打开文件的工具。
$ sudo lsof [ -选项]
`
`
$ sudo lsof -i -P -n
$ sudo lsof -i -P -n | grep ':22'
$ lsof -i:80
$ lsof -i:80 | grep LISTEN | grep -v grep | awk '{print $2}'
$ lsof < 文件名>
$ lsof -c < 进程号>
$ lsof -p < 进程号>
$ lsof -g gid
$ lsof +d /usr/local/
$ lsof +D /usr/local/
$ lsof -d 4
$ lsof -i -U
3. ps
ps命令用于查看系统中的进程,通过查看进程列表,可以了解系统正在运行的程序和服务,判断是否存在异常的进程。
输入ps -ef可以查看系统中所有的进程,包括进程的 PID、父进程 PID、用户、启动时间、占用的 CPU 和内存等信息。
$ ps -ef
`
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 Nov28 ? 00:00:10 /sbin/init noibrs
root 2 0 0 Nov28 ? 00:00:00 [ kthreadd]
.. .
`
$ ps -aux
`
root 333271 0.0 0.0 5768 1016 ? S 15 :17 0 :00 sleep 1
qs 333274 0.0 0.0 5768 1032 ? S 15 :17 0 :00 sleep 1
root 333275 0.0 0.0 10332 3616 pts/0 R+ 15 :17 0 :00 ps -aux
`
ps aux --sort = -%cpu
ps -ef
ps -ef | grep java
ps -ef | grep qs-server | grep -v grep | awk '{print $2}'
ps -eaf | grep qs-server | grep -v grep
ps aux | grep tomcat
ps aux | grep 4874
$ ps -A | grep nginx
$ ps -ef | grep nginx
ps eww -p < 进程号>
ps auwxf
ps aux | grep < xxx> | grep -v grep | awk '{print $2}' | xargs kill -9
3. jps
jps
jps -q
jps -m
jps -l
jps -v
jps -V
9. kill
kill 2868
kill -9 2868
pkill nginx
nc -l -k 443 -c 'echo -e "HTTP/1.1 200 OK\n\n $(date) test port"'
nc -l -k 3306 -c 'echo -e "HTTP/1.1 200 OK\n\n $(date) test port"' &
11. ls
cd /proc/< 进程号>
ls -all
12. fuser
sudo fuser < 端口号> /tcp
三、用户
$ env
1. 当前登陆用户
1. users
users命令用于显示当前登录系统的用户。
如果需要查看系统中所有的用户,需要结合其他命令一起使用。
在终端中输入users,会列出当前登录系统的所有用户。
如果要查看所有用户,可以先使用cut -d: -f1 /etc/passwd获取所有用户名,再结合users命令进行筛选。
`
all_users = $( cut -d: -f1 /etc/passwd)
for user in $all_users; do
if who | grep -q "^$user " ; then
echo "$user is logged in"
fi
done
`
2. who、w
who命令用于查看当前系统中有哪些用户登录以及他们从哪里登录等信息。
在终端中输入who,会列出当前登录系统的用户的用户名、终端设备、登录时间等信息。
如果输出为空,则表示当前没有用户登录。
$ who
`
root pts/0 2024 -12-17 11 :06 ( 121.238 .221.3)
root pts/1 2024 -12-17 11 :06 ( 121.238 .221.3)
qs pts/2 2024 -12-17 11 :33 ( 121.238 .221.3)
qs pts/3 2024 -12-17 11 :33 ( 121.238 .221.3)
`
w命令不仅可以查看当前登录的用户,还能显示系统的负载情况,如系统运行时间、平均负载等。
在终端输入w,它会以表格形式展示登录用户的详细信息,包括用户名、终端、登录时间、空闲时间、JCPU、PCPU 和当前执行的命令等,同时也会显示系统负载的相关数据。
$ w
`
11 :39:19 up 18 days, 16 :09, 4 users, load average: 0.00 , 0.01 , 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 121.238 .221.3 11 :06 0 .00s 0 .01s 0 .00s w
root pts/1 121.238 .221.3 11 :06 32 :27 1 .69s 1 .68s top
qs pts/2 121.238 .221.3 11 :33 5 :41 0 .01s 0 .01s -bash
qs pts/3 121.238 .221.3 11 :33 5 :41 0 .32s 0 .31s top
`
3. last 最近登录信息列表
last命令可以查看系统的登录历史记录,包括登录的用户、登录时间、登录来源等信息,通过查看该记录可以了解过去一段时间内系统的登录情况。
在终端中输入last,会按照时间倒序显示系统的登录记录。
如果想查看更详细的信息,可以使用last -a命令,它会显示登录用户的主机名或 IP 地址等额外信息。
$ last -a
`
qs pts/3 Tue Dec 17 11 :33 still logged in 121.238 .221.3
qs pts/2 Tue Dec 17 11 :33 still logged in 121.238 .221.3
root pts/1 Tue Dec 17 11 :06 still logged in 121.238 .221.3
root pts/0 Tue Dec 17 11 :06 still logged in 121.238 .221.3
.. .
`
$ last -n 5
2. 切换用户
$ su -
$ sudo -s
$ su test
$ su - test
$ id '用户名'
$ Ctrl+D
1. ssh
$ ssh -l test -p 22 192.168 .19.128
$ ssh -p 22 root@192.168.100.101
3. 查看用户
1. /etc/passwd 用户文件
$ cat /etc/passwd
`
root:x:0:0:root:/root:/bin/bash
账号名称( root)
用户密码( x)
用户标识码( UserID)
组标识码( GroupID)
用户相关信息( root)
用户目录
用户环境
`
$ awk -F':' '{ print $1}' /etc/passwd
$ cut -d: -f1 /etc/passwd
/etc/passwd文件是 Linux 系统用于存储用户信息的重要文件,每行记录一个用户的相关信息,通过查看该文件可以获取系统中所有用户的基本信息。
使用cat命令查看/etc/passwd文件的内容,如cat /etc/passwd,文件中的每一行都代表一个用户,格式为用户名:密码:用户ID:组ID:用户描述信息:用户主目录:默认登录Shell。
$ cat /etc/passwd
`
root:x:0:0:root:/root:/bin/bash
qs:x:1001:1001::/home/qs:/bin/bash
.. .
`
awk是一种强大的文本处理工具,可以对文本文件进行各种操作。
通过指定/etc/passwd文件和相应的分隔符,可以提取出用户名并显示。
使用awk -F: '{print $1}' /etc/passwd命令,会以:为分隔符,提取/etc/passwd文件中的第一列,即用户名,并将其显示出来。
$ awk -F: '{print $1}' /etc/passwd
getent命令用于从系统数据库中获取条目,通过指定passwd数据库,可以获取与/etc/passwd文件相同的用户信息。
在终端中输入getent passwd,会列出系统中的所有用户及其相关信息,格式与/etc/passwd文件中的一致。
$ getent passwd
`
root:x:0:0:root:/root:/bin/bash
qs:x:1001:1001::/home/qs:/bin/bash
.. .
`
id命令用于显示用户的身份标识信息,包括用户 ID、组 ID 等。如果不指定用户名,则显示当前用户的信息。通过循环遍历所有可能的用户 ID,可以查看系统中的所有用户。
$ id
`
uid = 0 ( root) gid = 0 ( root) groups = 0 ( root)
`
$ id qs
`
uid = 1001 ( qs) gid = 1001 ( qs) groups = 1001 ( qs) ,0( root)
`
`
for i in $( seq 0 65535 ) ; do
id "user$i " 2 > /dev/null && echo "user$i exists"
done
`
$ compgen -u
2. /etc/shadow 用户密码文件
$ cat /etc/shadow
`
root:$6$fY0VaIFr$n2WpIAO8cQoet7zx1c6af4aamabadE40w0YFserSkdanbfiI9IM77TWdmHhrVvZWeMivpmK0XltwdP8kYqGyZ/:19352:0:99999:7:::
qs:$y$j9T$FhplkKWsZM8X3I/QpqF9I/$zeubrM0qHCFEwP561XonAzaTGhMo5fH/gW3wu0Dsfi7:19871:0:99999:7:::
mysql:! :19112:0:99999:7:::
用户名
口令
最后一次修改时间
最大时间间隔
最小时间间隔
警告时间
不活动时间
失效时间
标志
`
3. /etc/sudoers 权限文件
$ vim /etc/sudoers
`
root ALL = ( ALL:ALL) ALL
qs ALL = ( ALL:ALL) ALL
`
4. 创建用户
$ useradd test
$ passwd test
$ useradd test -d /home/test
$ useradd -g root -d /home/data -s /sbin/nologin qs
5. 删除用户
$ userdel test
$ userdel –r test
6. 修改密码
$ sudo passwd root
四、用户组
1. 查看登陆用户所属组
$ groups
`
root
qs root
`
2. 查看用户组
1. /etc/group 用户组文件
$ cat /etc/group
`
root:x:0:qs
qs:x:1001:
组名
组口令
用户列表
`
2. /etc/gshadow 用户组密码文件
$ cat /etc/gshadow
`
root:*::qs
qs:! ::
mysql:! ::
`
3. 创建用户组
$ groupadd public
$ useradd qs –g public
4. 删除用户组
$ groupdel public