[转帖]020 Linux 20 个宝藏命令案例
https://my.oschina.net/u/3113381/blog/5478108
1 JDK 相关的查找命令
(1)确认是否安装 JDK
//命令
java -version
//输出示例
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, mixed mode)
(2)查找 java 命令目录的位置
//命令
which java
//输出示例
/usr/bin/java
(3)查找 java 命令的位置的软链地址
//命令
ls -l /usr/bin/java
//输出示例
lrwxrwxrwx 1 root root 22 Jun 18 15:45 /usr/bin/java -> /etc/alternatives/java
(4)通过软链地址查找 JDK 的安装目录
//命令
ls -l /etc/alternatives/java
//输出示例
lrwxrwxrwx 1 root root 73 Jun 18 15:45 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64/jre/bin/java
(5)查找 Linux jvm 工具在哪里
//命令
ls -al /usr/bin/j*
2 Linux 下安装 JDK8 的两种方式
(1)使用安装包安装
1.下载 JDK8
登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
选择对应JDK版本下载(windows、mac 下载后,也可通过 stfp 命令上传到 Linux 服务器)。
2. 登录Linux,切换到 root 用户
sudo -i
3. 在 usr 目录下建立 java 安装目录
cd /usr
mkdir java
4.将 jdk-8u60-linux-x64.tar.gz 拷贝到 java 目录下
cp ./jdk-8u60-linux-x64.tar.gz /usr/java/
5.解压 jdk 到当前目录
tar -zxvf jdk-8u60-linux-x64.tar.gz
得到文件夹 jdk1.8.0_60
6.编辑配置文件,配置环境变量
vim /etc/profile
//添加如下内容:JAVA_HOME 根据实际目录来
JAVA_HOME=/usr/java/jdk1.8.0_60
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
7.重启机器或执行命令:
source /etc/profile
或
sudo shutdown -r now
8.查看安装情况
java -version
(2)使用 yum 工具安装
- 不带 devel 后缀的 package,通常只包含能让程序运行的动态库和配置文件。
- 而带 devel 后缀的 package,则包含使用这个 package 开发程序的所有的必需文件。比如头文件,等等。有时 devel package 还包含静态库。
1.执行如下命令查看可安装的jdk版本
yum -y list Java*
2.选择安装的 jdk 版本,进行安装,选择带 devel 后缀的包
yum install -y java-1.8.0-openjdk-devel.x86_64
3.编辑配置文件,配置环境变量
vim /etc/profile
//添加如下内容:JAVA_HOME 根据实际目录来
JAVA_HOME=/usr/java/jdk1.8.0_60
CLASSPATH=$JAVA_HOME/lib/
PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
4.重启机器或执行命令:
source /etc/profile
或
sudo shutdown -r now
5.查看安装情况
java -version
3 查看 AscII 表命令
man ascii
4 文件下载 wget 命令
//wget是一个下载文件的工具
wget -O wordpress.zip http://www.centos.bz/download.php?id=1080
#-O 表示下载并以不同的文件名保存。
5 文件比较 diff 命令
Linux diff 命令用于比较文件的差异。
diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
diff log2014.log log2013.log
6 远程拷贝文件 scp 命令
scp /home/work/source.txt work@192.168.0.10:/home/work/
#把本地的 source.txt 文件拷贝到 192.168.0.10 机器上的 /home/work 目录下
scp work@192.168.0.10:/home/work/source.txt /home/work/
#把 192.168.0.10 机器上的 source.txt 文件拷贝到本地的 /home/work 目录下
scp work@192.168.0.10:/home/work/source.txt work@192.168.0.11:/home/work/
#把 192.168.0.10 机器上的 source.txt 文件拷贝到 192.168.0.11 机器的 /home/work 目录下
7 大文件切割成小文件 split 命令
# 如需要切割的文件是 app.log,生成的子文件前缀是 "child",以 1000 行为单位进行切割。
# -l 行数
split -l 1000 app.log child
8 统计文件个数命令
# 统计当前目录下文件的个数(不包含目录,不包括子目录下统计)
ls -l | grep "^-" | wc -l
# 统计当前目录下文件的个数(不包含目录,包括子目录下统计)
ls -lR| grep "^-" | wc -l
9 软连接设置 ln 命令
它的功能是为某一个文件在另外一个位置建立一个不同的链接,这个命令最常用的参数是-s,
具体用法是:ln -s 源文件 目标文件。
#删除软连接文件,重建一个软连接文件
rm python3
ln -s /usr/local/Cellar/python/3.7.7/bin/python3.7 python3
#查看一个软连接文件的详情
ls -al python3
10 系统重启命令
#方式1
reboot
#方式2
shutdown -r now
#方式3
shutdown -r +1
11 Linux 进程 killed 日志查看
(1)尝试如下两个命令
egrep -i -r 'killed process' /var/log
sudo grep -A 50 'oom' /var/log/messages
(2)OOM Killed 机制和日志查看
Linux 内核有个机制叫 OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。 尝试如下命令查看
grep "Out of memory" /var/log/messages
12 Linux Kill 命令(kill -9 三思而后用)
- kill 命令用于终止 Linux 进程,默认情况下,如果不指定信号,kill 等价于 kill -15。
- kill -15 执行时,系统向对应的程序发送 SIGTERM(15)信号,该信号是可以被执行、阻塞和忽略的,所以应用程序接收到信号后,可以做一些准备工作,再进行程序终止。
- 有的时候,kill -15 无法终止程序,因为他可能被忽略,这时候可以使用 kill -9,系统会发出 SIGKILL(9)信号,该信号不允许忽略和阻塞,所以应用程序会立即终止。
- 这也会带来很多副作用,如数据丢失等,所以,在非必要时,不要使用 kill -9 命令,尤其是那些 web 应用、提供 RPC 服务、执行定时任务、包含长事务等应用中,因为 kill -9 没给 Spring 容器、Tomcat 服务器、dubbo 服务、流程引擎、状态机等足够的时间进行收尾。
HUP 1 终端断线
INT 2 中断(同 Ctrl + C)
QUIT 3 退出(同 Ctrl + \)
TERM 15 终止
KILL 9 强制终止
CONT 18 继续(与STOP相反)
STOP 19 暂停(同 Ctrl + Z)
13 检查 IP 端口号是否畅通 telnet 命令
1.检测 telnet-server 的 rpm 包是否安装,若无输出内容,则表示没有安装。
rpm -qa telnet-server
2.安装 telnet-server
yum install telnet-server
3.安装 telnet 命令
yum install telnet
4.使用即可
telnet $ip $port
#输出内容,看到 Connected 就连接成功了
14 Linux ip、端口号查看命令
# Linux 终端查看自己的公网地址
curl ifconfig.me
# Linux 查看本机IP
ip -4 addr
# Linux 查看端口号进程
sudo lsof -i :5017
15 MAC 地址简述
- 它是一个用来确认网络设备位置的位址。在 OSI 模型中,第三层网络层负责 IP 地址,第二层数据链路层则负责 MAC 位址。MAC 地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的 MAC 地址 。
- MAC 地址的长度为 48 位 (6 个字节),通常表示为 12 个 16 进制数,如:00-16-EA-AE-3C-40 就是一个 MAC 地址,其中前 6 位 16 进制数 00-16-EA 代表网络硬件制造商的编号,它由 IEEE (电气与电子工程师协会) 分配,而后 6 位 16 进制数 AE-3C-40 代表该制造商所制造的某个网络产品 (如网卡) 的系列号。只要不更改自己的 MAC 地址,MAC 地址在世界是惟一的。形象地说,MAC 地址就如同身份证上的身份证号码,具有唯一性 。
16 Linux 请求 Web 服务器 curl 命令
# curl 是常用的命令行工具,用来请求 Web 服务器。
curl -X POST https://www.example.com
#详细参考
http://www.ruanyifeng.com/blog/2019/09/curl-reference.html
17 Linux 网络连接相关 netstat 命令
(1)netstat 命令常用参数
# 查看所有 3306 端口使用情况。
netstat -ntulp |grep 3306
-t或--tcp 显示TCP传输协议的连线状况。
-u或--udp 显示UDP传输协议的连线状况。
-l或--listening 显示监控中的服务器的 Socket。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
-a或--all 显示所有连线中的Socket。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
(2)netstat 相关的 TCP 统计案例
eg1:统计指定 ip 和端口号,各种 tcp 连接状态的数量
netstat -n | grep 1.2.3.4:22 | awk '/^tcp/ {++State[$NF]} END {for (i in State) print i, State[i]}'
- 命令中,^tcp 用于匹配开头包含 tcp 字符的文本行,$NF 指的是每行最后一个字段,数组 State [$NF] 就是以最后一个字段为下标指向一个存储单元或者说变量,此处代表该字段的统计结果,也就是 ++ 的意义所在, 统计值自增一。
- END 不能缺少表示 END 符号之后的指令于处理所有行结束时执行。
- i 是字段,State [i] 即为统计结果,每行处理完成则 State [$NF] 加 1。
eg2:统计某 ip TIME_WAIT 连接情况
netstat -apn | grep WAIT | grep "123.66.5.55" |wc -l
eg3:统计 TCP 连接的状况
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
18 查看 Linux 系统属性命令案例
(1)查看系统内核版本
cat /proc/version 查看系统内核版本
# 输出
Linux version 3.10.0-957.12.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Tue May 14 21:24:32 UTC 2019
(2)查看系统 CPU 核数命令
- 总核数 = 物理 CPU 个数 X 每颗物理 CPU 的核数
- 总逻辑 CPU 数 = 物理 CPU 个数 X 每颗物理 CPU 的核数 X 超线程数
# 查看物理 CPU 个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理 CPU 中 core 的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑 CPU 的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看 CPU 信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
(3)Linux proc 文件 - 系统和运行内核信息
proc 文件系统可以被用于收集有用的关于系统和运行中的内核的信息。
下面是一些重要的文件:
/proc/cpuinfo - CPU 的信息(型号, 家族, 缓存大小等)
/proc/meminfo - 物理内存、交换空间等的信息
/proc/mounts - 已加载的文件系统的列表
/proc/devices - 可用设备的列表exit
/proc/filesystems - 被支持的文件系统
/proc/modules - 已加载的模块
/proc/version - 内核版本
/proc/cmdline - 系统启动时输入的内核命令行参数
#如查看 cpu 的信息
cat /proc/cpuinfo
19 查看占用端口进程,并关闭掉占用进程
1.查看占用端口进程
lsof -i : $端口
2.进程关闭掉
kill -9 $进程ID
20 域名 DNS 解析 ip 命令
# dig $域名
dig www.baidu.com
[转帖]020 Linux 20 个宝藏命令案例的更多相关文章
- linux 20个常用命令
一.文件和目录 1. cd命令 (它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径) cd /home 进入 '/ home' 目录 cd .. ...
- [转帖]linux下安装7z命令及7z命令的使用
linux下安装7z命令及7z命令的使用 https://www.cnblogs.com/yiwd/p/3649094.html yum install p7zip 执行命令为 7za x 或者是 7 ...
- Linux下的查找命令which、whereis、locate、find(6/20)
Linux下查找相关命令主要有以下4个:which.whereis.locate.find. (1)which [-a] cmdname1 cmdname2 ...... 命令参数: -n ...
- [转帖]Linux系列之SAR命令使用详解
Linux系列之SAR命令使用详解 sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工 ...
- 【转帖】Linux上,最常用的一批命令解析(10年精选)
Linux上,最常用的一批命令解析(10年精选) https://juejin.im/post/5d134fbfe51d4510727c80d1 写的挺好呢 Linux这么多命令,通常会让初学者望而生 ...
- LINUX二十个基础命令
LINUX二十个基础命令 一. useradd命令 1.命令格式: useradd 选项 用户名 2.命令功能: 添加新的用户账号 3.常用参数: -c comment 指定一段注释性描述.-d 目录 ...
- Linux 性能监控之命令行工具
引言 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.这些命令行工具可以在各种Linux系统下使用,可以用于监控和查找产生性能问题的原因.这个命令行工具列表提供了足够的 ...
- PHP在linux上执行外部命令
PHP在linux上执行外部命令 一.PHP中调用外部命令介绍二.关于安全问题三.关于超时问题四.关于PHP运行linux环境中命令出现的问题 一.PHP中调用外部命令介绍在PHP中调用外部命令,可以 ...
- linux学习笔记——基础命令
最近看了一些老男孩linux运维视频,挺不错的,特此记录一下 linux组成 gun组件 shell等 linux内核 其他软件 linux主要内核: linux kernel2.2 linux ke ...
- Linux系统性能10条命令监控
Linux系统性能10条命令监控 概述 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. uptime dmesg | tail vmstat 1 mpstat -P ALL 1 p ...
随机推荐
- 华为云联合多家单位正式开源云原生多沙箱容器运行时Kuasar
摘要:云原生多沙箱容器运行时Kuasar正式开源. 本文分享自华为云社区<重磅发布!华为云联合多家单位正式开源云原生多沙箱容器运行时Kuasar>,作者:云容器大未来. 当地时间4月21日 ...
- AIGC的阿克琉斯之踵
摘要:现在,越来越多的企业和个人使用AIGC生成文章.图片.音乐甚至视频等内容,AIGC已经成为一种必备的工具.在游戏和原画师行业,甚至已经出现了第一批因为AI而失业的人. 本文分享自华为云社区< ...
- 经验说丨华为云视频Cloud Native架构下实践
摘要:来自华为云直播的段亮详细介绍华为云视频在Cloud Native的转型实践中遇到的问题.挑战以及解决之道. 随着云基础设施服务以及边缘计算技术的发展,Cloud Native,即云原生,架构理念 ...
- 冠军斩获10万奖金!首届“域见杯”医检AI开发者大赛精彩落幕
摘要:首届"域见杯"医检AI开发者大赛精彩落幕. 8月24日,由广州市科学技术局指导,金域医学和华为云共同打造的中国第三方医检行业首个开发者大赛--"域见杯"医 ...
- 鲲鹏BoostKit虚拟化使能套件,让数据加密更安全
摘要:借助华为鲲鹏BoostKit虚拟化使能套件(简称鲲鹏BoostKit虚拟化),可加速迈向云计算之旅.本次KAE加速引擎让数据加密更安全直播将介绍鲲鹏BoostKit加速库全景,基于BoostKi ...
- 如何在NET 6.0使用结构化的日志系统
在我们的系统里面,有一项技术是必须使用的,那就是日志记录.我们在调试系统或者跟踪系统运行情况,都可以通过日志了解具体的情况.在项目开发中,我们有可能使用系统本身所带的日志系统,也有 ...
- C#9.0:Init
背景 在以前的C#版本里面,如果需要定义一个不可修改的的类型的做法一般是:声明为readonly,并设置为只包含get访问器,不包含set访问器.如下: 1 public class PersonIn ...
- 【3rd Party】Cpp 中使用 Protobuf
前置条件: [Protoc]VS2019 (VS平台) 使用 CMake 编译安装.使用 Protobuf 库 [ToolChains]CLion(VS2019) + CMake + Vcpkg 的使 ...
- Mac | HomeBrew 安装 & 配置 MySQL
这个是我最新并且一直推崇的方法: 1.安装:brew install mysql 2.开启mysql:mysql.server start 3.使用mysql的配置脚本:/usr/local/opt/ ...
- C#格式化输入数据为货币格式
private void btn_Get_Click(object sender, EventArgs e) { double P_dbl_value;//定义double类型变量 if (doubl ...