Linux常用命令

推荐链接

菜鸟 - Linux 常用命令集合

新手linux命令必须掌握命令

DBA知道这17条Linux命令,就够了!

Linux常用文本操作命令整理

软件包管理

推荐文章:

Linux软件包管理基本操作入门

YUM 和 RPM 包管理器的不同之处

Linux 包管理基础:apt、yum、dnf 和 pkg

27 个 Linux 下软件包管理工具 DNF 命令例子

软件包管理

百科

软件包管理系统RPM包管理员dpkg

软件包及依赖查询网站

https://developer.aliyun.com/packageSearch

基于RPM

https://rpm.pbone.net/

基于Dpkg

https://pkgs.org/

Centos

rpm命令Linux rpm命令 - 菜鸟教程

dnf命令

yum命令linux yum 命令 - 菜鸟教程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost ~]# yum check-update    # 检查是否有可用的更新rpm软件包
[root@localhost ~]# yum update # 更新rpm软件包
[root@localhost ~]# yum -y update # 升级所有包,改变软件设置和系统设置,系统版本内核都升级
[root@localhost ~]# yum -y upgrade # 升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变

[root@localhost ~]# yum clean packages # 清除缓存目录下的软件包
[root@localhost ~]# yum clean headers # 清除缓存目录下的 header
[root@localhost ~]# yum clean oldheaders: 清除缓存目录下旧的 headers
# yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers
[root@localhost ~]# yum clean all

[root@localhost ~]# yum repolist
[root@localhost ~]# yum makecache # 重建数据源
[root@localhost ~]# yum repolist

Ubuntu

Debian 参考手册

dpkg命令

apt-get命令

Linux中apt与apt-get命令的区别与解释

1
2
3
4
5
6
7
8
9
10
11
12
13
apt install yum           # Ubuntu下安装yum

sudo apt update # 更新软件包列表,若找不到安装程序说明不在此列表内,更新列表后重试
sudo apt upgrade # 更新所有已安装的包(最新的不一定是最好的)

# 垃圾清理
sudo apt-get autoclean # 清理旧版本的软件缓存
sudo apt-get clean # 清理所有软件缓存
sudo apt-get autoremove # 删除系统不再使用的孤立软件

# 查看依赖
apt-cache depends gnome-core # 正向依赖
apt-cache rdepends gnome-core # 反向依赖

文件定位

whereis命令locate/slocate命令find命令which命令rpm命令

以 nginx 安装目录为例:

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~]# whereis nginx
[root@localhost ~]# whereis -b nginx # 定位指令的二进制程序、源代码文件和man手册页等相关文件的路径
[root@localhost ~]# locate nginx # 搜索一个数据库/var/lib/locatedb,查找目录与文件,但查不到最新的变动,为避免这种情况应先使用updatedb命令
[root@localhost ~]# find / | grep nginx # 在指定目录下查找子目录与文件

[root@localhost ~]# which nginx # 查找并显示给定命令(可执行程序)的绝对路径。查看某个系统命令是否存在并显示命令位置。

# rpm命令是RPM软件包的管理工具
[root@localhost ~]# rpm -qa | grep nginx # 列出安装过的软件包,且包含字符串nginx
[root@localhost ~]# rpm -q nginx # 获取nginx软件包的全名
[root@localhost ~]# rpm -ql nginx # rpm包中文件的安装位置
[root@localhost ~]# rpm -qal | grep nginx

网络状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
yum install -y lsof
lsof -i:8080 # 查看端口是否被占用,有列头,推荐使用

yum install -y net-tools
netstat -ntlp # 查看当前所有tcp端口
netstat -nulp # 查看当前所有udp端口
netstat -an | grep 80 # 查看所有包含80的端口使用情况
netstat -ntulp | grep 80 # 查看所有包含80的端口使用情况,包括PID(进程ID)、进程名。
netstat -tunlp | grep 80 # 查看所有包含80的端口使用情况,包括PID(进程ID)、进程名。
# -t : 指明显示TCP端口
# -u : 指明显示UDP端口
# -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(protocol)与资料的程序)
# -p : 显示进程标识符和程序名称,每一个套接字/端口都属于一个程序。
# -n : 不进行DNS轮询,显示IP(可以加速操作)

进程状态

Linux ps 命令 - 菜鸟

1
2
3
4
5
6
7
8
[root@localhost ~]# ps aux
[root@localhost ~]# ps aux | grep nginx

[root@localhost ~]# ps -f
[root@localhost ~]# ps -ef
[root@localhost ~]# ps -ef | grep nginx

ps axw -o pid,ppid,user,%cpu,vsz,wchan,command | egrep '(nginx|PID)'

输出头(标题)

Linux head 命令 - 菜鸟

在使用Linux命令时,如果命令中有管道 | ,则输出的信息中,头(标题)信息丢失,要想看每一列代表什么意思很不方便。

例如 ps auxw

1
2
3
4
5
6
7
8
9
10
11
$ ps axuw
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 193984 6556 ? Ss 08:51 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 08:51 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 08:51 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S 08:51 0:00 [kworker/u128:0]
root 6 0.0 0.0 0 0 ? S 08:51 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 08:51 0:01 [migration/0]
root 8 0.0 0.0 0 0 ? S 08:51 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 08:51 0:03 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 08:51 0:00 [lru-add-drain]

再加上管道符后

1
2
3
4
5
$ ps axuw | grep redis
esuser 2636 0.0 0.0 192 4 ? Ss 08:52 0:00 /usr/bin/dumb-init -- /redis-commander/docker/entrypoint.sh
polkitd 2654 0.2 0.4 52956 9020 ? Ssl 08:52 0:09 redis-server *:6379
esuser 2810 0.0 1.9 272292 36548 ? Ssl 08:52 0:01 /usr/bin/node ./bin/redis-commander
root 39925 0.0 0.0 112824 980 pts/0 S+ 10:05 0:00 grep --color=auto redis

可以看到头(标题)已经丢失。

一个简单的办法,通过 2 条命令叠加,获取头和内容:

1
2
3
4
5
6
$ ps axuw | head -1;ps axuw | grep redis
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
esuser 2636 0.0 0.0 192 4 ? Ss 08:52 0:00 /usr/bin/dumb-init -- /redis-commander/docker/entrypoint.sh
polkitd 2654 0.2 0.4 52956 9020 ? Ssl 08:52 0:09 redis-server *:6379
esuser 2810 0.0 1.9 272292 36548 ? Ssl 08:52 0:01 /usr/bin/node ./bin/redis-commander
root 40905 0.0 0.0 112824 984 pts/0 S+ 10:07 0:00 grep --color=auto redis

也就是先用命令本身加 | head -1 取到头(标题),然后再使用该命令输出内容,两者叠加输出即得到所要结果。

排序——sort

Linux sort命令 - 菜鸟

排序命令——sort

按列排序,数字大的在前:

1
2
3
4
5
6
7
8
$ ps auxw | sort -rnk 2
root 44271 0.0 0.0 126840 928 pts/0 S+ 10:14 0:00 sort -rnk 2
root 44270 0.0 0.0 155448 1868 pts/0 R+ 10:14 0:00 ps auxw
root 44269 0.0 0.0 108052 612 ? S 10:14 0:00 sleep 1
201 44263 0.0 0.0 1560 248 ? SN 10:14 0:00 sleep 1
201 33288 0.0 0.0 2412 1400 ? SN 09:52 0:01 bash /usr/libexec/netdata/plugins.d/tc-qos-helper.sh 1
root 8204 0.0 0.0 0 0 ? S< 09:02 0:00 [kworker/11:1H]
......

该例子,将第 2 列进行排序,最大的数排前面。

若只想看前10条的内容:

1
$ ps auxw | sort -rnk 2 | head -10

将实际内存消耗最大的10个进程显示出来:

1
2
$ ps auxw | head -1; ps auxw | sort -rnk 6 | head -10
$ ps auxw --sort=-rss | head -11

统计——wc

统计命令——wc

切分——cut

切分命令——cut

去重——uniq

去重命令——uniq

查找——grep

grep 命令 - 菜鸟
查找命令——grep

替换/查找/删除命令——sed

替换/查找/删除命令——sed

强大的文本分析命令——awk

awk 命令 - 菜鸟
强大的文本分析命令——awk

1
ps -ef | grep mar-service.jar:60002 | grep -v grep | awk '{ print }'

服务管理

systemctl命令 :是系统服务管理器指令,它实际上将 servicechkconfig 这两个命令组合到一起。

1
2
3
4
5
6
7
8
9
10
11
# 查看所有可用的单元文件
[root@localhost ~]# systemctl list-unit-files | grep ''
# 查看所有已安装服务
[root@localhost ~]# systemctl list-unit-files --type=service | grep ''

# 输出激活的unit,下面两个命令等效
[root@localhost ~]# systemctl | grep ''
[root@localhost ~]# systemctl list-units | grep ''
# 输出激活的类型为service的unit
[root@localhost ~]# systemctl list-units --type=service | grep ''
[root@localhost ~]# systemctl list-units --type=service | grep nginx

vim 中查找和替换

vi / vim 键位图: https://www.runoob.com/linux/linux-vim.html

https://harttle.land/2016/08/08/vim-search-in-file.html

https://blog.csdn.net/ballack_linux/article/details/53187283

清空历史命令

history命令

.bash_history 默认可记录 500 条历史命令。

只有在正常退出当前 shell 时,在当前 shell 中运行的命令才会保存至 .bash_history 文件中。

1
2
3
[root@localhost ~]# history 10               # 显示最近使用的10条历史命令
[root@localhost ~]# history -c # 清空当前shell历史命令记录
[root@localhost ~]# rm -rf ~/.bash_history # 删除'.bash_history'文件

若想在每次登录后都清空历史记录,可以在登录后登出前执行 rm -rf ~/.bash_history 即可。

Wget 和 cURL

百科: Wgetwget命令cURLcurl命令

curl 与 wget

wget命令 用来从指定的URL下载文件。

curl命令 是一个利用URL规则在命令行下工作的文件传输工具。curl URL 默认将下载文件输出到stdout,将进度信息输出到stderr(默认也是终端),可以使用 -O(使用原文件名)或 -o(指定输出文件名)指定输出位置。curl支持更多的协议,还支持cookies、认证、限速、文件大小等特征。

1
2
[root@localhost ~]# wget -c URL
[root@localhost ~]# curl URL -O --progress

删除文件/文件夹

1
2
3
4
rm -rf # 文件或文件夹名
# -i 删除前逐一询问确认。
# -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。
# -r 将目录及以下之档案亦逐一删除。

解压缩

tar

1
2
3
# 解压
tar -zxvf jdk-7u80-linux-i586.tar.gz
tar -zxvf /mnt/hgfs/SharedFolders/openjdk-11+28_linux-x64_bin.tar.gz -C /opt/

zip

1
2
3
4
5
6
7
8
9
10
11
12
# 安装zip、unzip应用
yum install zip unzip # Centos
apt install zip unzip # Ubuntu

# 解压
unzip /mnt/hgfs/SharedFolders/linuxx64_12201_database.zip -d /opt
# 将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip
zip -q -r html.zip /home/html
# 如果在我们在 /home/html 目录下,可以执行该命令
zip -q -r html.zip *
# 从压缩文件 cp.zip 中删除文件 a.c
zip -dv cp.zip a.c

7z

Linux有问必答:Linux 中如何安装 7zip

支持 7Z,ZIP,Zip64,TAR,RAR,CAB,ARJ,GZIP,BZIP2,CPIO,RPM,ISO,DEB 压缩文件格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装
$ yum install p7zip p7zip-plugins
$ apt install p7zip-full p7zip-rar

# 将01.jpg和02.png压缩成一个7z包
$ 7z a pkg.7z 01.jpg 02.png
# 将所有的.jpg文件压缩成一个7z包
$ 7z a pkg.7z *.jpg
# 将文件夹folder压缩成一个7z包
$ 7z a pkg.7z folder
# 将pkg.7z中的所有文件解压出来,e是解压到当前路径
$ 7z e pkg.7z # 不实用
# 将pkg.7z中的所有文件解压出来,x是解压到压缩包命名的目录下
$ 7z x pkg.7z # 正确的解压方法

防火墙

Centos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
firewall-cmd --version # 查看版本
firewall-cmd --help # 查看帮助
firewall-cmd --get-active-zones # 查看区域信息
firewall-cmd --get-zone-of-interface=eth0 # 查看指定接口所属区域信息
firewall-cmd --panic-on # 拒绝所有包
firewall-cmd --panic-off # 取消拒绝状态
firewall-cmd --query-panic # 查看是否拒绝

firewall-cmd --state # 查看防火墙状态
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙
systemctl enable firewalld # 设置开机启动
systemctl disable firewalld # 停止并禁用开机启动
firewall-cmd --reload # 重启防火墙

#--------------------------------------------------------------------
# 查看指定区域所有开启的端口号
firewall-cmd --zone=public --list-ports
#---------------------------------------
# 在指定区域开启端口(如80端口号,命令方式)
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新启动防火墙
firewall-cmd --reload
#---------------------------------------
# 在指定区域开启某个范围的端口号(如18881~65534,命令方式)
firewall-cmd --zone=public --add-port=18881:65534/tcp --permanent
# 重新启动防火墙
firewall-cmd --reload
#---------------------------------------
# 参数说明:
# –zone 作用域
# –add-port=8080/tcp 添加端口,格式为:端口/通讯协议
# –permanent #永久生效,没有此参数重启后失效
#--------------------------------------------------------------------

Ubuntu

相关链接: 在 Ubuntu 中用 UFW 配置防火墙完全用 GNU/Linux 工作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#*************************************************************************************#
apt install firewalld # 安装后使用firewall

#************************************ 安装ufw ************************************#
# ufw 和 gufw(图形界面) 是简化 iptable 的操作。图形界面的 gufw 必须手动安装,但不建议纯文字环境的 GNU/Linux 安装,它会与一些桌面环境的套件产生相依性。
sudo apt-get install ufw
sudo aptitude install ufw

#************************************ ufw状态 ************************************#
sudo ufw status # 查看ufw状态,默认为不活动(inactive)。这会显示所有规则列表,以及UFW是否处于激活状态。

#************************************ 启动防火墙 ************************************#
sudo ufw enable # 启用 UFW 并强制执行防火墙规则。
sudo ufw disable # 禁用 ufw 规则。
# UFW 会继续运行,并且在下次启动时会再次启动,即随系统启动。

#************************************ 设置规则 ************************************#
# 设置默认规则
sudo ufw default allow outgoing # 允许所有传出连接
sudo ufw default deny incoming # 阻止所有传入连接
sudo ufw default deny/allow # 设置默认为阻止或允许。阻止即关闭所有外部对本机的访问(本机访问外部正常)

# 添加规则,所有例子的 allow 都可以根据需要变成 deny。
# --基于端口的允许或阻止,两种方式添加规则:用"端口号"或者"服务名"表示。
sudo ufw allow ssh # 或 sudo ufw allow 22;允许SSH的22端口的传入和传出连接
sudo ufw allow http/tcp # 或 sudo ufw allow 80/tcp;允许 80 端口的 TCP 包
sudo ufw allow 1725/udp # 允许 1725 端口上的 UDP 包
sudo ufw deny 111 # 阻止外部访问端口111
# --按照 “IP地址” 、 “子网" 和 "IP地址/子网/端口" 的组合来允许/阻止。
sudo ufw allow from 192.168.2.1 # 允许来自此IP的全部连接,即此IP可以访问所有的本机端口
sudo ufw allow from 192.168.2.1/24 # 允许来自特定子网(192.168.2.1 ~ 192.168.2.254)的全部连接。
sudo ufw allow from 192.168.2.1/24 to any port 22 # 允许来自特定子网的所有22端口连接。
sudo ufw allow from 192.168.2.1 to any port 22 proto tcp # 允许特定"IP/端口"的组合。proto tcp 可以删除或者根据需求改成 proto udp。

# 删除规则,在规则的前面加上 delete。删除规则同样可以使用服务名。
sudo ufw delete allow/deny 80 # 删除以前定义的“允许/拒绝访问80端口”的规则
sudo ufw delete allow 80 = sudo ufw deny 80
sudo ufw delete deny 80 = sudo ufw allow 80

编辑ufw的配置文件

虽然可以通过命令行添加简单的规则,但仍有可能需要添加或删除更高级或特定的规则。 在运行通过终端输入的规则之前,UFW 将运行一个文件 before.rules,它允许回环接口、ping 和 DHCP 等服务。要添加或改变这些规则,编辑 /etc/ufw/before.rules 这个文件。 同一目录中的 before6.rules 文件用于 IPv6 。

还存在一个 after.ruleafter6.rule 文件,用于添加在 UFW 运行你通过命令行输入的规则之后需要添加的任何规则。

还有一个配置文件位于 /etc/default/ufw。 从此处可以禁用或启用 IPv6,可以设置默认规则,并可以设置 UFW 以管理内置防火墙链。

日志记录

1
sudo ufw logging on # 启动日志记录

可以通过运行 sudo ufw logging low|medium|high 设计日志级别,可以选择 lowmedium 或者 high。默认级别是 low

常规日志类似于下面这样,位于 /var/logs/ufw

1
Sep 16 15:08:14 <hostname> kernel: [UFW BLOCK] IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=123.45.67.89 DST=987.65.43.21 LEN=40 TOS=0x00 PREC=0x00 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0x00 SYN URGP=0

前面的值列出了你的服务器的日期、时间、主机名。剩下的重要信息包括:

  • [UFW BLOCK]:这是记录事件的描述开始的位置。在此例中,它表示阻止了连接。
  • IN:如果它包含一个值,那么代表该事件是传入事件
  • OUT:如果它包含一个值,那么代表事件是传出事件
  • MAC:目的地和源 MAC 地址的组合
  • SRC:包源的 IP
  • DST:包目的地的 IP
  • LEN:数据包长度
  • TTL:数据包 TTL,或称为 time to live。 在找到目的地之前,它将在路由器之间跳跃,直到它过期。
  • PROTO:数据包的协议
  • SPT:包的源端口
  • DPT:包的目标端口
  • WINDOW:发送方可以接收的数据包的大小
  • SYN URGP:指示是否需要三次握手。 0 表示不需要。

旧版内核清理

uname(unix name 的意思) 是一个打印系统信息的工具,包括内核名称、版本号、系统详细信息以及所运行的操作系统等等。

CentOS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 列出所有被安装的 rpm package
rpm -qa | grep xxx

# 查询系统现在的全部内核
rpm -qa | grep kernel

### 查询结果 ###
kernel-modules-core-5.14.0-522.el9.x86_64
kernel-core-5.14.0-522.el9.x86_64
kernel-modules-5.14.0-522.el9.x86_64
kernel-5.14.0-522.el9.x86_64
# 以上是旧版内核
kernel-tools-libs-5.14.0-527.el9.x86_64
kernel-modules-core-5.14.0-527.el9.x86_64
kernel-core-5.14.0-527.el9.x86_64
kernel-modules-5.14.0-527.el9.x86_64
kernel-5.14.0-527.el9.x86_64
kernel-tools-5.14.0-527.el9.x86_64
kernel-headers-5.14.0-527.el9.x86_64
### 查询结果 ###

# 删除内核
yum remove kernel-modules-core-5.14.0-522.el9.x86_64 # 同时会删除依赖项
dnf remove --oldinstallonly # 一键删除旧内核
dnf autoremove # 从系统中删除所有最初作为用户安装软件包的依赖项安装的软件包,但此类包不再需要它们。

Ubuntu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 查看系统存在的内核
dpkg -l|grep linux
#
dpkg –get-selections|grep linux

# 显示当前的内核
uname -r
uname -a

# 升级内核
apt-get dist-upgrade

# 删除内核
sudo apt-get remove <内核名>

# 带有image的文件是需要删除的,一定要写全版本等字符。其他相关的文件会自动删除。例如:
sudo apt-get remove –purge linux-image-2.6.24-19-generic
# –purge参数表示彻底删除。
# 另外,我删除2.6.24-19的内核时,忘了自己当前正使用此内核。不过,幸好有惊无险,删除不了当前使用的内核。

# 更新menu.list
sudo update-grub

# 先将 menu.list 备份,然后改名或删除。这样会自动重建文件。然后将原来的 menu.list 中需要的东西拷贝到新的menu.list中。
# 重建时,grub不会将其他系统的引导信息也添加进去。需要的从原来的文件中复制一下就行了。

发行版名称和版本号

https://linux.cn/article-9586-1.html

lsb_release 命令

LSB(Linux 标准库Linux Standard Base)能够打印发行版的具体信息,包括发行版名称、版本号、代号等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# CentOS系统
[root@localhost ~] lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.7.1908 (Core)
Release: 7.7.1908
Codename: Core

# Ubuntu系统
root@localhost:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.3 LTS
Release: 18.04
Codename: bionic

/etc/*-release 文件

release 文件通常被视为操作系统的标识。在 /etc 目录下放置了很多记录着发行版各种信息的文件,每个发行版都各自有一套这样记录着相关信息的文件。

Centos

下面这一组是在 RHEL/CentOS/Fedora 系统上显示出来的文件内容。其中 /etc/redhat-release/etc/system-release 文件是指向 /etc/[发行版名称]-release 文件的一个连接。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[root@localhost ~]# cat /etc/centos-release
CentOS Linux release 7.7.1908 (Core)
[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
[root@localhost ~]# cat /etc/system-release
CentOS Linux release 7.7.1908 (Core)

[root@localhost ~]# cat /etc/fedora-release # 针对Fedora系统

[root@localhost ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

Ubuntu

下面是一组在 Ubuntu/Debian 系统上显示出来的文件内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
root@localhost:~# cat /etc/issue
Ubuntu 18.04.3 LTS \n \l

root@localhost:~# cat /etc/issue.net
Ubuntu 18.04.3 LTS
root@localhost:~# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"
root@localhost:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.3 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.3 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
root@localhost:~# cat /etc/debian_version
buster/sid

uname 命令

uname(unix name 的意思) 是一个打印系统信息的工具,包括内核名称、版本号、系统详细信息以及所运行的操作系统等等。

1
2
root@localhost:~# uname -a
Linux localhost.localdomain 4.12.14-300.fc26.x86_64 #1 SMP Wed Sep 20 16:28:07 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

以上运行结果说明使用的操作系统版本是 Fedora 26。

/proc/version 文件

这个文件记录了 Linux 内核的版本、用于编译内核的 gcc 的版本、内核编译的时间,以及内核编译者的用户名。

1
2
3
4
5
6
7
# Centos系统
[root@localhost /]# cat /proc/version
Linux version 3.10.0-1062.4.3.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Wed Nov 13 23:58:53 UTC 2019

# Ubuntu系统
root@localhost:~# cat /proc/version
Linux version 4.15.0-65-generic (buildd@lgw01-amd64-006) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #74-Ubuntu SMP Tue Sep 17 17:06:04 UTC 2019

dmesg 命令

dmesg(展示信息display message 或驱动程序信息driver message)是大多数类 Unix 操作系统上的一个命令,用于打印内核的消息缓冲区的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Centos系统
[root@localhost /]# dmesg | grep "Linux"
[ 0.000000] Linux version 3.10.0-1062.4.3.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) ) #1 SMP Wed Nov 13 23:58:53 UTC 2019
[ 0.040193] SELinux: Initializing.
[ 0.040202] SELinux: Starting in permissive mode
[ 0.128493] ACPI: Added _OSI(Linux-Dell-Video)
[ 0.569081] SELinux: Registering netfilter hooks
[ 0.595927] Linux agpgart interface v0.103
[ 0.617635] usb usb1: Manufacturer: Linux 3.10.0-1062.4.3.el7.x86_64 uhci_hcd
[ 0.620753] Loaded X.509 cert 'CentOS Linux kpatch signing key: ea0413152cde1d98ebdca3fe6f0230904c9ef717'
[ 0.620765] Loaded X.509 cert 'CentOS Linux Driver update signing key: 7f421ee0ab69461574bb358861dbe77762a4201b'
[ 0.621155] Loaded X.509 cert 'CentOS Linux kernel signing key: 3f59ae1577d58723184f6dbab18ad5f59de41d39'
[ 1.884388] SELinux: Disabled at runtime.
[ 1.884402] SELinux: Unregistering netfilter hooks

修改主机名、本地域名

主机名是用于标识网络上设备的标签,在同一网络上,你不应有两台或更多台具有相同主机名的计算机。

主机名分为三类:static、pretty和transient。

1、static:静态主机名,它存储在/etc/hostname文件中,可由用户设置。

2、pretty:用于向用户展示的自由格式UTF8主机名。

3、transient:内核维护的动态主机名。DHCP或mDNS服务器可以在运行时更改动态主机名,故而又叫临时主机名。仅针对动态主机名的修改会在系统重启后失效,默认情况下,它与静态主机名相同。

对于静态和动态主机名(static和transient),例如host.example.com,建议使用完全限定的域名(FQDN)。

hostname命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
################################## CentOS ##################################
[root@192 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@192 ~]# cat /etc/hostname
localhost.localdomain
[root@192 ~]# cat /etc/sysconfig/network
# Created by anaconda
[root@192 ~]#

# 显示主机名
[root@192 ~]# hostname
192.168.0.106
[root@192 ~]# hostnamectl
Static hostname: localhost.localdomain
Transient hostname: 192.168.0.106
Icon name: computer-vm
Chassis: vm
Machine ID: 1af437bd284b4e0a87966ecde78f06b2
Boot ID: 4b85a757b0f349d0a989650d8b4a5846
Virtualization: vmware
Operating System: CentOS Linux 8 (Core)
CPE OS Name: cpe:/o:centos:centos:8
Kernel: Linux 4.18.0-147.el8.x86_64
Architecture: x86-64

# 修改主机名
[root@192 ~]# hostname centos8-1911.zhaolq.com # 临时修改,系统重启失效
[root@192 ~]# hostnamectl set-hostname centos8-1911.zhaolq.com # 永久修改,和 --static 效果相同

[root@192 ~]# hostnamectl set-hostname centos8-1911.zhaolq.com --static
[root@192 ~]# hostnamectl set-hostname "Your Pretty HostName" --pretty
[root@192 ~]# hostnamectl set-hostname centos8-1911.zhaolq.com --transient # 系统重启失效
[root@192 ~]# reboot

# 修改本地域名
[root@localhost ~]# vim /etc/hosts
# 然后添加 '127.0.0.1 www.baidu.com'

查看ip

iproute2 - 维基百科Linux ip 命令 - 菜鸟

Net-tools

iproute2 对决 net-tools

ifconfignet-tools 包提供。net-tools 起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具。但自2001年起,Linux社区已经对其停止维护

iproute2仍处在 持续开发 中。

JDK安装

检索词:JDK安装 | 安装JDK | JDK环境变量 | Java环境变量

1
2
3
4
5
6
7
8
9
10
11
12
13
# 编辑系统环境变量
vim /etc/profile
# 在文件中加入以下信息
#export JAVA_HOME=/opt/local/jdk-17.0.14+7
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#export PATH=$JAVA_HOME/bin:$PATH
echo "export JAVA_HOME=/opt/local/jdk-17.0.14+7" >> /etc/profile
echo "export PATH=$JAVA_HOME/bin:$PATH" >> /etc/profile

# 重新加载系统配置文件
source /etc/profile
# 检查jdk
java -version

Tomcat部署

Tomcat不分32和64位

tomcat相关命令:

启动tomcat(在tomcat的bin目录下): ./startup.sh
关闭tomcat(在tomcat的bin目录下): ./shutdown.sh

查看实时日志命令:
1、先切换到 cd tomcat/logs
2、 tail -f catalina.out 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新。 cat catalina.out 查看所有内容
3、 Ctrl+c 是退出tail命令。


TOMCAT 8 无法打印log,控制台不输出。解决:换成 TOMCAT 7。


nohup

相关链接: 百科Linux nohup 命令 - 菜鸟nohup命令Bash中的特殊字符大全

nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。 如果不将 nohup 命令的输出重定向,输出将追加到当前目录的 nohup.out 文件中。

nohup command >/dev/null 2>&1 & 意思就是,将command保持在后台运行,并且将输出的日志忽略。

1
2
# 启动java服务
nohup java -jar -Dserver.port=9088 gateway.jar >/dev/null 2>log &