二、Linux 基础知识快速巩固及日常使用技巧

本地环境搭建 Linux 服务器

1.示例 Vmware 安装迷你版的 Centos,Nat 模式可访问外网

为了节省文章篇幅,环境安装及网络配置查看如下:

点击即可跳转

2.也可使用云上服务器(腾讯云、阿里云等等)

这个直接购买云服务器方便很多,看看最近是否有活动,买了一台1核2G的腾讯云服务器玩玩,算下来是一个月7.5,加上域名,100大洋。

在这里插入图片描述

3.终端工具使用 Xshell、Xftp、SecureCRT 等等

在这里插入图片描述

基础知识篇章

基本操作命令

在这里插入图片描述
1.ls 命令:

功能:对于目录,该命令列出该目录下的所有子目录和文件。

在这里插入图片描述

 示例:   ls -l

在这里插入图片描述

2.pwd 命令:

功能:显示用户当前所在的目录

pwd

图示:
在这里插入图片描述
3.touch 命令:

功能:常用来新建一个文件。

[root@justdoit local]# touch test.txt
[root@justdoit local]# echo "Hello World">test.txt 
[root@justdoit local]# cat test.txt 
Hello World
[root@justdoit local]#

图示:
在这里插入图片描述

4.mkdir 指令:

功能:新建一个目录。

在这里插入图片描述

5.head/tail/cat/wc 指令:

在这里插入图片描述

6.Vim 编辑器技巧:

首尾跳转:

在这里插入图片描述

行首行尾跳转:

在这里插入图片描述

显示行数:

Vim 进入后,打上冒号,输入 set nu
在这里插入图片描述

删除行:

在这里插入图片描述

保存 wq 退出:

在这里插入图片描述

或者直接 ZZ 也是保存退出 。

在这里插入图片描述

操作系统管理

软件安装

在这里插入图片描述
日常安装方式: rpm、yum,推荐 yum,RPM 无法解决软件包的依赖关系。

[root@justdoit ~]# yum install -y wget

在这里插入图片描述
初识正则


^ :锁定行的开始 如:'^Example'匹配所有以Example开头的行。

$ :锁定行的结束 如:'Example$'匹配所有以Example结尾的行。

^$ :空行

日常查看配置文件,会有注释还有空行 !

在这里插入图片描述
为了方便查看具体配置,可去掉注释还有空行。

[root@Rucoding etc]# cat rsyslog.conf |grep -v "^#"|grep -v "^$"
grep  "^#" , 过滤 rsyslog.conf 中的#打头的注释; 

grep  "^$" ,过滤 rsyslog.conf 中的空行。加上 -v 参数,反向选择。

在这里插入图片描述

Shell 命令解释器

Shell 编程基本函数

基本函数调用:


[root@Rucoding opt]# cat rucoding.sh 
#!/bin/bash    #指此脚本使用/bin/sh来解释执行
function coding () {     #函数名称
    echo "Toady,Rucoding!"  
}  
  
function codingcode () {  
    echo "ok"  
}  
  
coding          #调用函数
codingcode      #调用函数
[root@Rucoding opt]# 

执行函数,调试时,可加参数 -x ,即 sh -x rucoding.sh


[root@Rucoding opt]# sh rucoding.sh 
Toady,Rucoding!
ok
[root@Rucoding opt]# 

#加参数 -x
[root@Rucoding opt]# sh -x rucoding.sh 
+ coding
+ echo $'Toady,Rucoding\357\274\201'
Toady,Rucoding!
+ codingcode
+ echo ok
ok
[root@Rucoding opt]# 

算数比较符

expr,用于计算变量等。
用法:expr 表达式


[root@Rucoding opt]# cat computer.sh 
#!/bin/bash
x=50
y=100

val=`expr $x + $y`
echo "x + y : $val"

val=`expr $x - $y`
echo "x - y : $val"

val=`expr $x \* $y`
echo "x * y : $val"

val=`expr $y / $x`
echo "y / x : $val"

val=`expr $y % $x`
echo "y % x : $val"

if [ $x == $y ]
then
   echo "x 等于 y"
fi
if [ $x != $y ]
then
   echo "x 不等于 y"
fi
[root@Rucoding opt]# 

在这里插入图片描述
定时任务(crontab)

基本格式:

在这里插入图片描述
示例:

每天早上 8 点 10 开启ssh服务:10 08 * * * systemctl start sshd

在线解析:

在这里插入图片描述

文本操作的三剑客

grep ==》擅长过滤

示例: 查询 server.xml 文件中包含"innodb_data"

[root@justdoit opt]# cat server.xml | grep "innodb_data"
innodb_data_home_dir = /www/server/data
innodb_data_file_path = ibdata1:10M:autoextend
[root@justdoit opt]# 

sed ==》擅长取行、替换

示例:取 server.xml 文件中 的第19行

在这里插入图片描述

[root@justdoit opt]# sed -n "19p" server.xml 
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[root@justdoit opt]# 

替换:

示例: 注释掉 Example 打头的

[root@justdoit opt]# tail -f server.xml 
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

Example    #想要注释掉Example打头的

sed 参数解释:

-i :直接修改读取的文件内容,而不是输出到终端;
-e :直接在命令列模式上进行 sed 的动作编辑;

sed函数解释:

s:取代,可以直接进行取代;

[root@justdoit opt]# sed -i -e "s/^Example/#Example/" server.xml       #执行
[root@justdoit opt]# tail -f server.xml 
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 768K
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

#Example    #已注释

awk ==》过滤内容,擅长取列

示例:执行 df -hT,取输出的第2、3列

[root@justdoit ~]# df -hT |awk '{print $2,$3}'

在这里插入图片描述

文件传输
 rz上传,sz下载命令。
安装:
[root@justdoit ~]# yum install -y lrzsz

rz的用法

在命令终端输入rz回车后,就会出现文件选择对话框,选择需要上传文件,一次可以指定多个文件。

[root@Rucoding opt]# rz

在这里插入图片描述

sz的用法

sz命令可以单下载一个文件,也可以多个文件同时下载。

[root@Rucoding opt]# sz computer.sh rucoding.sh

在这里插入图片描述

lftp 传输

命令参数解释如下。

下载文件:

get xx.txt   ##下载 xx.txt 文件
mget *.txt   ##批量下载所有 txt 文件
mirror xxx/  ##将 xxx 目录整个的下载下来

上传文件:

put xx.txt  ##上传 xx.txt 文件
mput *.txt  ##批量上传所有 txt 文件
mirror -R xxx/ ##将 xxx 目录整个的上传

示例:

#!/bin/sh 
HOST=192.168.137.130    #ip 地址
USER=test_sftp        #账号密码信息
PASS=test_2020  
echo "Starting to sftp..."
lftp -u ${USER},${PASS} sftp://${HOST} <<EOF 
cd /usr/local/logfile  
mget *.*  
bye  
EOF  
echo "done"

ftp 传输

常用命令解释:

open:与 ftp 服务器相连接
lcd:目录名(进入本机目录)
mget 下载多个文件
get:下载文件
put:上传文件

格式:

ftp  hostname  端口
如:ftp 192.168.137.100 2175 回车,记得先安装好 vsftpd。

图示脚本:
在这里插入图片描述

scp 传输方式

scp 命令可进行安全的远程文件拷贝。

简易写法:

scp  [可选参数]  file_source  file_target

例如:

[root@justdoit opt]# scp -r server.xml root@192.168.137.100:/opt

图示:
在这里插入图片描述

文件共享

同一主机目录共享:

mount  --bind 命令即可
##示例:/var/log/clamav/ 挂载到 /home/test/log_file/。
[root@justdoit opt]# scp -r server.xml root@192.168.137.100:/opt
##断开绑定:
[root@justdoit opt]# umount  /home/test/log_file/

图示:
在这里插入图片描述

不同主机文件共享:

mount + nfs;  
##先了解好相关 NFS、RPC 等知识,比如启动 NFS 之前,RPC 就要先启动了,
##否则 NFS 会无法向 RPC 注册;RPC 若重新启动时,原本注册的数据会不见吗等等。

a.服务端环境搭建:

服务器 ip:192.168.137.130

安装 nfs:

yum -y install nfs-utils rpcbind

图示:
在这里插入图片描述

配置 nfs:
在这里插入图片描述
示例代码:

[root@server01 ~]# mkdir /data
[root@server01 ~]# 
[root@server01 ~]# echo “hello world” >> /data/index.html
[root@server01 ~]# 
[root@server01 ~]# vim /etc/exports
[root@server01 ~]# 
[root@server01 ~]# cat /etc/exports 
/data 192.168.0.0/24(rw,no_root_squash,no_all_squash,sync)
[root@server01 ~]# 
[root@server01 ~]# exportfs -r
[root@server01 ~]# 
[root@server01 ~]# showmount -e localhost
Export list for localhost:
/data 192.168.0.0/24
[root@server01 ~]# 

问题:

nfs 重启时提示:

rpc.nfsd: writing fd to kernel failed: errno 111 (Connection refused)

解决方式:

[root@server01 ~]#  service rpcbind restart
停止 rpcbind:                                             [确定]
正在启动 rpcbind:                                          [确定]
[root@server01 ~]# service nfs start
[root@server01 ~]# 

在这里插入图片描述

b.客户端配置:

客户端 ip:192.168.137.100

安装服务
$ yum -y install nfs-utils
创建挂载目录
$ mkdir /mnt/data

查看服务器共享目录信息

[root@client01 ~]# showmount -e 192.168.137.130
Export list for 192.168.137.130:
/data 192.168.137.*
[root@client01 ~]# 

挂载共享:

[root@client01 ~]# mount -t nfs 192.168.137.130:/data /mnt/data -o proto=tcp -o nolock
[root@client01 ~]# df -hT  #查看挂载情况
Filesystem           Type   Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                     ext4    18G   14G  2.8G  84% /
tmpfs                tmpfs  931M  519M  413M  56% /dev/shm
/dev/sda1            ext4   477M   52M  400M  12% /boot
192.168.137.130:/data
                     nfs    9.8G   23M  9.2G   1% /mnt/data
[root@client01 ~]# showmount -e 192.168.137.130
Export list for 192.168.137.130:
/data 192.168.137.*
[root@client01 ~]# cd /mnt/data/
[root@client01 data]# ls
index.html  lost+found
[root@client01 data]# cat index.html 
“hello world”
[root@client01 data]# 

日志查看和搜查指令

1.cat 命令:

cat -n file_name 输出带行数编号的文件内容;

2.tail 命令:

指定的文件的最后部分输出

常用参数:

-f 循环读取 ;

-n<行数> 显示文件的尾部 n 行内容。

3.定位日志文件中的错误信息:

cat  info.log | grep "error" -C 10

查看日志中出现关键字 “error” 的前后10行内容;

-C 参数:前后内容;

-A 参数:之后内容(After);

-B 参数:之前内容(Before)。

搜索某个文件匹配的字符串:

grep -rn ‘需查找的字符串’ xx.txt

例如:

[root@server01 log_file]# grep -rn "port" server.xml  #查找 port 关键词
1:port		= 3306
[root@server01 log_file]# 

小结:
在这里插入图片描述

性能工具知识篇章

CPU 性能工具

top 指令:经常用来监控linux的系统状况,比如cpu、内存的使用。

例如,使用top命令查看所有java进程的状态:

[root@Rucoding opt]# top $(ps -e | grep java | awk '{print $1}' | sed 's/^/-p/')

在这里插入图片描述
第一行输出:

17:27:10  当前系统时间
11 days,  7:23  系统已连着运行了11天7小时23分钟
1 users 当前有1个用户登录系统
load average: 0.01, 0.02, 0.05  后面的三个数分别是1分钟、5分钟、15分钟的负载情况。(跟uptime指令查看一样)

第二行输出: 进程任务

系统现在共有1个进程,其中处于运行中的0个,1个在休眠(sleep),stoped 状态的有0个,僵尸状态(zombie)的有0个。

后面三行是CPU、内存状态、交换分区指标,日常看第七行以下:各进程的运行状态监控:

PID 进程id
USER 进程所有者
PR 进程优先级
NI 值。负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb
RES 进程使用的、未被换出的物理内存大小,单位kb
SHR 共享内存大小,单位kb
S   进程状态
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计
COMMAND 进程名称
内存性能工具

free 指令: 用来显示系统内存状态。

常用指令查看:

[root@Rucoding ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        602M         79M        372K        1.1G        1.0G
Swap:          1.0G         10M        1.0G
[root@Rucoding ~]# 

在这里插入图片描述

ps 指令: 即process status,主要是查看当前运行的进程状态。

例如: 显示java所有进程
在这里插入图片描述

磁盘 I/O 性能工具

df 指令:用来检查Linux服务器的文件系统的磁盘空间使用情况。

常用指令查看:

[root@justdoit ~]# df -hT
Filesystem           Type   Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
                     ext4    18G   14G  2.7G  84% /
tmpfs                tmpfs  931M  220K  931M   1% /dev/shm
/dev/sda1            ext4   477M   52M  400M  12% /boot
[root@justdoit ~]# 

在这里插入图片描述
图示解释:

   Filesystem:设备名称
   
   Type:显示文件系统类型
   
   Size:整体磁盘空间大小
   
   Used:已使用的磁盘空间大小
   
   Avail:剩余的磁盘空间大小
   
   Use%:磁盘使用率
   
   Mounted on:磁盘挂载的目录
   
网络性能工具

netstat 指令:用于显示各种网络相关的统计数据

找出程序运行的端口:

[root@justdoit ~]# netstat -ap |grep ssh

图示:
在这里插入图片描述
找出运行在指定端口的进程:

[root@Rucoding ~]# netstat -tnlp | grep ':8090'在这里插入图片描述
找出运行在指定端口的进程:

[root@Rucoding ~]# netstat -tnlp | grep ':8090'

小结一段:

[root@Rucoding ~]# lsof -i | grep 14272   #根据进程pid查端口
docker-pr 14272  root4u  IPv6   218434  0t0  TCP *:8090 (LISTEN)
[root@Rucoding ~]# lsof -i:8090   #根据端口查进程
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 14272 root4u  IPv6 218434  0t0  TCP *:8090 (LISTEN)
[root@Rucoding ~]# netstat -nap | grep 14272  #根据进程pid查端口
tcp6   0  0 :::8090 :::*LISTEN  14272/docker-proxy  
[root@Rucoding ~]# netstat -nap | grep 8090  #根据端口port查进程
tcp6   0  0 :::8090 :::*LISTEN  14272/docker-proxy  
[root@Rucoding ~]# 

工欲善其事必先利其器

在线分析诊断工具 Arthas

最近在浏览博客发现了 在线分析诊断工具 Arthas,挺实用的。之前,线上问题排查往往需要查网络、jps 等一系列操作,真的费时费力。现在,大多数的常见问题都可以使用 Arthas 轻松定位,迅速解决,省时省力。

Arthas 的安装和简单使用:

[root@Rucoding arthas]# wget https://alibaba.github.io/arthas/arthas-boot.jar

下载并启动 Demo:

[root@Rucoding arthas]# wget https://alibaba.github.io/arthas/arthas-demo.jar
[root@Rucoding arthas]# java -jar arthas-demo.jar

arthas-demo是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果

启动arthas:
在这里插入图片描述

看到此界面就表示启动并关联成功啦。

交互模式下查看帮助 help:
在这里插入图片描述

查看 cpu 占用过高
在这里插入图片描述
上面的输出结果可以看到 id 为17的这个线程cpu占用率100%,这时通过 thread 加线程 id 输出该线程的栈信息。
在这里插入图片描述
更多常用的命令,可查看官方网站:

Arthas 官网
一图掌握 Arthas,转载地址

Linux 常用的强大工具神器
1、文本操作的三剑客:sed、awk、grep 指令
2、sz/rz:交互式文件传输,简单方便
3、htop 进程监控工具,替代 top 命令

图示:
htop指令
码不停蹄,贵在实践。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java智慧阁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值