linux常用命令&脚本

这篇文章主要介绍的是本人使用过的一些Linux脚本和命令,顺序比较混乱,不定期更新,根据目录小节标题查找

0.ssh免密登录

在使用ssh命令登录其他服务器时,如果对该服务器的登录的频繁的,那么输入密码就是一件令人头疼的事情,即使密码很简单,这时候就需要免密登录来减少令人头疼的密码输入次数。

# .ssh文件夹是隐藏的,查看.ssh文件夹需要的命令如下
ls -al ~
# 生成rsa密钥对,分为公钥和私钥,如果没有.ssh文件夹,那么这一步可以自动生成.ssh文件夹
ssh-keygen -t rsa
# 该密钥对保存在用户目录 ~/.ssh文件夹中
# 进入.ssh文件夹中
cd ~/.ssh
# 向需要免密登录的主机发送公钥,这里的ip地址填发送主机的ip地址
# 需要免密登录的机器都需要发送一遍
ssh-copy-id 192.168.47.103
# 查看免密登录是否成功
ssh 192.168.47.103

ps:如果发现上述配置完了后,免密登录还是不行,最好的解决方法时将自己的机器和需要免密登录的机器中的~/.ssh文件夹删除,重复上述步骤

#删除.ssh文件夹
rm -rf ~/.ssh

1. scp和rsync

  • scp 可以实现服务器与服务器之间的数据拷贝。
  • rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。

rsync 和 scp 区别:用 rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp 是把所有文件都复制过去。

scp -r $pdir/$fname $user@$host:$pdir/$fname
命令 递归 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
rsync -av $pdir/$fname $user@$host:$pdir/$fname
命令 选项参数 要拷贝的文件路径/名称 目的地用户@主机:目的地路径/名称
-a: 归档模式,保留所有文件属性,递归同步目录
-v: 显示详细输出,方便调试
-z: 压缩传输,减小网络带宽占用
--delete: 删除目标上没有源中对应文件的文件

集群分发文件脚本

#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ] 
then
	echo Not Enough Arguement! 
	exit;
fi
#2. 遍历集群所有机器
for host in host1 host2 host3
do
	echo ====================	$host	====================
	#3. 遍历所有目录,挨个发送
	for file in $@ 
	do
		#4. 判断文件是否存在
		if [ -e $file ] 
		then
			#5. 获取父目录
			pdir=$(cd -P $(dirname $file); pwd)

			#6. 获取当前文件的名称
			fname=$(basename $file) 
			ssh $host "mkdir -p $pdir"
			rsync -av $pdir/$fname $host:$pdir 
		else
			echo $file does not exists!
		fi 
	done
done

注意:在编写完脚本后需要赋予其执行去权限

chmod +x  $file

2. 集群共同执行某个控制台命令的脚本

如果需要让集群中的机器执行某个相同的命令,例如yum install命令

#!/bin/bash

# 从控制台读取要执行的指令
echo "请输入要在集群中执行的指令:"
read command_to_execute

# 遍历集群中的所有主机,并在每台主机上执行指令
for host in host1 host2 host3
do
  echo "在主机 $host 上执行指令:$command_to_execute"
  ssh $host "$command_to_execute"
done

3.chown

使用情景:有些时候,某些文件的持有者如果为root用户,那么使用本地用户对这些文件进行修改,不可避免地需要用到sudo命令,如果需要频繁的对该文件夹进行操作,那么最好使用chown修改所有文件的,所有者和所有者组。

将目录及其下所有文件和子目录的所有者和所属组都更改为user用户和user组,可以使用以下命令:
sudo chown user:user -R $dir

4.hadoop集群启停脚本

这个脚本启动的前提是已经配置好hadoop中的 HDFS,Yarn和Historyserver

#!/bin/bash
if [ $# -lt 1 ]
then
 echo "No Args Input..."
 exit ;
fi
case $1 in
"start")
 echo " =================== 启动 hadoop 集群 ==================="
 echo " --------------- 启动 hdfs ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
 echo " --------------- 启动 yarn ---------------"
 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
 echo " --------------- 启动 historyserver ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
 echo " =================== 关闭 hadoop 集群 ==================="
 echo " --------------- 关闭 historyserver ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
 echo " --------------- 关闭 yarn ---------------"
 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
 echo " --------------- 关闭 hdfs ---------------"
 ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
 echo "Input Args Error..."
;;
esac

5 查看集群java进程脚本(jps命令)

#!/bin/bash
for host in hadoop102 hadoop103 hadoop104
do
 echo =============== $host ===============
 ssh $host jps 
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值