【Linux之轨迹】Linux 各种实用功能合集(持续补充)


1. 服务器基础了解

① 基本查询

一台服务器刚到手,首先当然就是要先认识它啦

1)	查看系统信息
	uname -a

2)	查看操作系统版本
	cat /etc/redhat-release

3)	查看网络配置信息
	ifconfig

4)	查看磁盘信息,加 -h 会将单位转化为 G,M 这些
	df -h

5)	查看内存实用情况,-h 同上
	free -h

② 修改主机名字

对于刚到手的服务器,主机名字通常是一堆乱码,很影响观感
这时候,只需要以下一句,然后重新连接服务器,就完成了

hostname <自定义名称>

2. 基础技巧

① 文件查找

很多情况下,我们想快速知道某个文件的位置,这时候就需要用到查找命令了
常见的查找命令有:findwhereiswhich

1)	查找某目录下某个文件
	文件名支持通配符,加上 -ls 可以顺带列出文件信息
	find <目录名> -name <文件名> [-ls]

2) 查找命令机器邦族文件所在位置
	whereis <命令名>(如 whereis ls)

3) 查找 PATH 下的可执行文件
	which <文件名>(如 which ls)

通常来说,find 命令我们用的最多,可以满足基本的查找需求了


② 命令高亮

在很多 docker 容器中,ls 列出来的文件并没有高亮,看着很难受
而我们也知道,使用 ls --color 列出来的文件就有颜色

那其实修改也很简单,就是在 /etc/bashrc 文件中给 ls 命令起别名(alias),如下:

vim /etc/.bashrc
在文件最后面补上:alias ls='ls --color' 就完毕啦

3. 常见命令安装

各种 docker 容器通常为精简版的,很多命令都是 not found,这里列出各种命令的下载方法

1)	更新资源
	apt-get update

2)	安装--ping
	apt-get install iputils-ping

3)	安装--ps
	apt-get install procps

4)	安装--sudo
	apt-get install sudo
	yum install sudo

5) 安装--service
	yum install initscripts

6)	安装--ifconfig
	yum install net-tools

7) 安装--ssh
	yum install openssh
	yum install openssh-server
	yum install openssh-clients

4. 服务器通讯

① ssh 免密登录

ssh 免密登录的实现原理,就是在 A 服务器 上生成公钥,然后将公钥放到 B 服务器
往后 A 服务器 访问 B 服务器 时,如果 B 服务器 中检查到了 A 服务器 的公钥
就表明 A 服务器B 服务器 信任,可以不需要输入 B 服务器 的密码而直接连接

明白了原理,实现起来思路就很清晰了,接下来是步骤:

1)	首先下载 ssh,以下三步(安装了服务端和客户端)
	yum install openssh
	yum install openssh-server
	yum install openssh-clients

2)	然后检查配置文件,查看以下两个配置是否一样(默认应该都是这样的)
	vim /etc/ssh/sshd_config
	  PermitRootLogin yes
	  PasswordAuthentication yes
	这两个配置允许外网通过 ssh 连接该服务器

3)	如果发现不是这样,就修改它,同时需要重启 ssh 是指生效
	service sshd restart
	同样该命令可能不存在,就下载它
	yum install initscripts

4)	然后在想要免密登录其他服务器的服务器中
	生成公钥和私钥(一路回车到底就行了,不需要输入内容)
	ssh-keygen -t rsa
	其中 id_rsa 为私钥,id_rsa.pub 为公钥

5)	将该服务器的公钥拷贝到目标服务器
	ssh-copy-id <目标服务器 IP 地址>

完成以上操作后,以后就可以直接通过 ssh <目标服务器 IP> 连接到该服务器,而无需密码了
这在很多场合下的作用很大,尤其是在需要自动访问的情况下,人不在旁边无法输入密码,就得靠免密登录了

② scp rsync 实现服务器之间传输文件

这个脚本是基于上边 ssh 免密登录的,用起来才丝滑,不然每次都要输入密码

一般情况下我们向其他服务器发送文件,使用的应该是 scp 命令
这个命令是将整一份文件都拷贝到目标服务器,若该服务器指定路径下已存在同名文件,则将其删除,命令示例如下:

以下指令将目标服务器,以 USER 身份放在指定 IP 的指定目录下
scp [-r] <目标文件全路径> <USER>@<IP>:<目标存放地址>
-r	表示递归复制,支持复制非空文件夹

但我们知道这样效率不高,如果能够实现同名文件只更改差异地方就好了,而 rsync 正是实现了这个功能,示例代码如下:

rsync -av <目标文件全路径> <USER>@<IP>:<目标存放地址>
-a	可以替代-r,除了能递归同步以外,还可以同步元信息(比如修改时间、权限等)
-v	可以将结果输出到终端,这样就可以看到哪些内容被同步了

③ xsync 脚本实现集群分发文件

上边第 ② 步做完,也可以实现基本的集群分发和保证基本的效率了,但每一次都需要手动输入服务器IP,目标存放地址,而且每次只能发送给一台服务器,这对一个集群来说就很不友好,所以我们基于 rsync 命令,再封装一个 xsync 命令,shell 脚本如下(参考:尚硅谷):
注意:里边的 hadoop001 这些,还要自行手动修改成自己集群的名字(如果没有配置 host 映射,则需要写入 IP 地址)

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if [ $pcount -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi

#2. 遍历集群所有机器
# 也可以采用:
# for host in hadoop{102..104};
for host in hadoop001 hadoop002 hadoop003
do
    echo ====================    $host    ====================
    #3. 遍历所有目录,挨个发送
    for file in $@
    do
        #4 判断文件是否存在
        if [ -e $file ]
        then
            #5. 获取父目录
            pdir=$(cd -P $(dirname $file); pwd)
            echo pdir=$pdir

            #6. 获取当前文件的名称
            fname=$(basename $file)
            echo fname=$fname

            #7. 通过ssh执行命令:在$host主机上递归创建文件夹(如果存在该文件夹)
            ssh $host "mkdir -p $pdir"

            #8. 远程同步文件至$host主机的$USER用户的$pdir文件夹下
            rsync -av $pdir/$fname root@$host:$pdir
        else
            echo $file does not exists!
        fi
    done
done

脚本编写完,执行以下赋予执行权限同时分发到集群中的各个服务器上

1)	给予执行权限
	chmod 777 xsync

2)	分发到集群各台服务器(这里顺带测试看了脚本本身)
	如果希望能直接使用 xsync 执行命令,则可以将其放到 bin 目录下(即:将 xsync 先放到 bin 目录下,再使用以下命令进行分发,就可以将该文件分发到各台服务器的 bin 目录了)
	./xsync	xsync

5. Vim 编辑器

① 出现中文乱码 (2021-10-3)

这种情况多出现在没有 vim 而新装上 vim 的时候
解决方法是在配置文件中加配置,同样找到 /etc/vimrc,在最后添加:

set encoding=UTF-8
set langmenu=zh_CN.UTF-8
set fileencoding=utf-8

② Tab 键空格数过多 (2021-10-21)

在一些 vim 编辑器中,tab 键默认的空格数是 8,有时候看起来会太过于宽不舒服
要修改它也是在 /etc/vimrc 配置文件中进行,最后面添加:

set tabstop=4

其中 4 表示 4 个空格的长度,可以根据需求任意修改

③ 选择、复制、剪切、粘贴 (2021-10-21)

v + 光标移动	->	按字符选择
V			->	按行选择
p			->	在光标之后粘贴内容
P			->	在光标之前粘贴内容
d			->	v 或 V 选中后,进行剪切
y			->	v 或 V 选中后,进行复制
yy			->	复制当前行,并自动使用 p 粘贴
:reg		->	查看剪切板内容

6. 内存管理

由于是个人练习(再加上穷- -),所以买的服务器是 1 和 2G 的,这到后面就出现了程序一多服务器直接死机的情况
那么怎么避免这种情况的出现呢?
这时,查看当前内存信息,决定要让哪些程序跑起来,就显得很重要啦

① free 指令探索 (2021-10-25)

该指令可以查看当前的内存总量,使用量,空闲量,缓存量以及可供程序使用量,如下图:
在这里插入图片描述
这张图是在启动了 tomcat,nginx, 3 个 docker,每个 docker 里各启动一个 zookeeper 的情况
可以看到,当前空闲量只剩 557M,这时如果我想再启动 3 个 Kafka(每个占 256M)就需要 768M,这是不是不够启动了呢?

一开始我也是这么想的,心想为什么后边的 buff/cache 那么高可不可以去掉
但后边经过了解才发现,原来 Linux 会自动将空闲的内存一部分作为缓存,来提高程序的运行速度
而这部分缓存,在我们需要其他程序需要用到时,将会自行释放出来给我们用
所以,真正看我们到底还能跑多少程序,并不是看 free,而应该看 available,这里边显示了我们还可以使用多少

所以,在启动了 3 个 Kafka 后,变成了下图:
在这里插入图片描述
可以清晰看到,很大一部分 buff/cache 腾出来了,而 3 个 Kafka 也成功启动并没有撑爆内存
嘛,虽说即使这样,也很难再跑其他程序就是了

下面再简单补充下 free 的用法

free	-h	即 -human,代表人能看懂的,会自动转化成 K M G 等单位
		-m	即全部单位转化为 M
		-k	即全部单位转化为 K
		-B	即全部单位转化为 B

② swap 交换分区解决内存不足问题 (2021-10-26)

很多时候会出现服务器内存不够使用的情况,这时如果不想多买服务器或者升级服务器,就可以考虑交换分区了
交换分区类似于 Windows 的虚拟内存,可以指定一部分磁盘空间当成内存使用

由于文章篇幅较长,这里单独写成了一篇,如下:
【Linux之轨迹】1核2G 内存不够怎么办?Swap 交换分区解决内存不足问题


…待续


趴在石头上的狮子,与巡回的大猩猩(IceClean)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寒冰小澈IceClean

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

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

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

打赏作者

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

抵扣说明:

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

余额充值