020 Linux 20个宝藏命令案例

020 Linux 20个宝藏命令案例

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

「不甩锅的码农」原创,转载请注明来源,未经授权禁止商业用途!同名 GZH 请关注!

Original: https://www.cnblogs.com/bilahepan/p/15982495.html
Author: 不甩锅的码农
Title: 020 Linux 20个宝藏命令案例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524028/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • [云原生]Kubernetes-集群搭建(第2章)

    一、前置知识点 二、kubeadm部署方式介绍 三、安装要求 四、最终目标 五、准备环境 六、环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(…

    Linux 2023年6月13日
    078
  • 部署office在线预览服务器(Office Web Apps Server)

    引言为方便在web端方便的使用office。 简介 Office Online Server (OOS,下文简写为OOS ) 提供基于浏览器的 Word、PowerPoint、Ex…

    Linux 2023年6月14日
    0129
  • 第二周作业

    第二周作业 一、显示在/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或者目录 [root@CentOS8 / ]#!mkdir mkdir /etc/…

    Linux 2023年6月13日
    094
  • 实验1:SDN拓扑实践

    实验1:SDN拓扑实践 基础要求 a) mininet运行结果图 b)2的执行结果截图 2.a)3台交换机,每个交换机连接1台主机,3台交换机连接成一条线。 2.b)3台主机,每个…

    Linux 2023年6月7日
    0104
  • 在Linux下安装Redis

    1. 下载Redis的压缩包 [root@spirit-of-fire ~]# wget http://download.redis.io/releases/redis-5.0.5…

    Linux 2023年6月14日
    098
  • 国产化之银河麒麟安装达梦数据库DM8

    背景 某个项目需要实现基础软件全部国产化,其中操作系统指定银河麒麟,数据库使用DM8。 虽然在之前的文章中已经成功模拟国产飞腾处理器,但是运行效率不高,所以这里的银河麒麟操作系统还…

    Linux 2023年5月27日
    0101
  • Python 装饰器

    直接进入主题 原代码 以下是原代码,要求给改代码添加统计时间功能 版本1(直接在原函数上修改) 可能有的同学就做出了下面这个版本 版本2(将函数当做参数传入) 经过修改上面的版本我…

    Linux 2023年6月13日
    0103
  • go语言接口

    接口在底层的实现有两个部分:type 和 data。 在源码中,显式地将 nil 赋值给接口时,接口的 type 和 data 都将为 nil。此时,接口与 nil 值判断是相等的…

    Linux 2023年6月13日
    068
  • 多线程执行同一任务,不共享局部变量

    多线程执行同一任务,不共享局部变量 一、 代码展示 import threading import time 多线程执行同一任务时,局部变量是不共享的 def sum_num():…

    Linux 2023年6月14日
    091
  • python中的cls和self区别

    self:Always use self for the first argument to instance methods self是作为类进行实例化传递的第一个参数,也就是我…

    Linux 2023年6月14日
    096
  • 给亨亨猫软件配置系统代理下载国外视频

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    097
  • 分析redis key大小的几种方法

    当redis被用作缓存时,有时我们希望了解key的大小分布,或者想知道哪些key占的空间比较大。本文提供了几种方法。 一. bigKeys 这是redis-cli自带的一个命令。对…

    Linux 2023年5月28日
    0128
  • Spring 4 集成 redis 实现缓存 二

    项目开发过程中经常用到mybatis,为了提升查询效率,mybatis支持一级和二级缓存,一级缓存基于SqlSession级别,默认开启,二级缓存基于Mapper级别;一级和二级缓…

    Linux 2023年6月14日
    0100
  • css或html中添加空格

    posted @2022-08-03 16:31 七窍玲珑心 阅读(8 ) 评论() 编辑 Original: https://www.cnblogs.com/lzh93/p/16…

    Linux 2023年6月13日
    0114
  • 【建议收藏】你知道数据库是怎么运行的吗?

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月11日
    080
  • 从零开始构建Linux

    目的:深入了解以Linux内核为基础的系统是如何组成,运行,以构建一个最基础的,纯净的系统。 LFS构建步骤宿主机准备– linux操作系统安装– 使用独立…

    Linux 2023年6月7日
    099
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球