推荐链接
菜鸟 - 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命令 :是系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到一起。
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 百科: Wget 、 wget命令 、 cURL 、 curl命令
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.rule
和 after6.rule
文件,用于添加在 UFW 运行你通过命令行输入的规则之后需要添加的任何规则。
还有一个配置文件位于 /etc/default/ufw
。 从此处可以禁用或启用 IPv6,可以设置默认规则,并可以设置 UFW 以管理内置防火墙链。
日志记录
1 sudo ufw logging on # 启动日志记录
可以通过运行 sudo ufw logging low|medium|high
设计日志级别,可以选择 low
、 medium
或者 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=0 x00 PREC=0 x00 TTL=249 ID=8475 PROTO=TCP SPT=48247 DPT=22 WINDOW=1024 RES=0 x00 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 [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 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 [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) ) 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))
dmesg 命令 dmesg(展示信息display message 或驱动程序信息driver message)是大多数类 Unix 操作系统上的一个命令,用于打印内核的消息缓冲区的信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 [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) ) [ 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 # [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
ifconfig 由 net-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 nohup java -jar -Dserver.port=9088 gateway.jar >/dev/null 2>log &