Linux命令总结
Posted Icedzzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux命令总结相关的知识,希望对你有一定的参考价值。
1. SSH
SSH登录原理
SSH是一种网络协议,用于计算机之间的加密登录。SSH采用非对称加密,非对称加密有两个密钥:公钥和私钥。数据使用公钥加密之后,只能使用私钥进行解密,而私钥被破解的概率很低很低。
-
本机生成密钥和公钥
-
把公钥传递给远程主机
-
主机把公钥追加进免检名单
-
本机请求远程主机
-
远程主机去免检名单里找到所属公钥
-
生成用公钥加密后的字符串传回本机
-
本机使用私钥进行解密
-
本机把解密后的信息传给远程主机
-
远程主机进行验证
-
登录成功
面试题:安装Hadoop为什么需要SSH免密登录?
hadoop集群模式一般运行在redhat或者是centos等系统平台上,在任务计划分发,心跳监测以及任务管理,多租户管理等等都会用到ssh,所以这个必须安装。在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作。例如,某个脚本能够终止并重启集群中的所有守护进程。所以,需要安装SSH,但是,SSH远程登陆的时候,需要密码验证,集群中数千台计算机,数千台计算机都需要手工输入密码,这是不太现实的,所以,就需要配置SSH无密码登录。
Hadoop安装配置SSH密码登陆流程:
- 配置 ip 地址和主机名映射:
vim /etc/hosts
# 文件末尾增加
192.168.43.202 hadoop001
- 生成公私钥
ssh-keygen -t rsa
- 授权
进入 ~/.ssh 目录下,查看生成的公匙和私匙,并将公匙写入到授权文件:
[root@@hadoop001 sbin]# cd ~/.ssh
[root@@hadoop001 .ssh]# ll
-rw-------. 1 root root 1675 3 月 15 09:48 id_rsa # 查看生成的公钥
-rw-r--r--. 1 root root 388 3 月 15 09:48 id_rsa.pub
# 写入公匙到授权文件
[root@hadoop001 .ssh]# cat id_rsa.pub >> authorized_keys
[root@hadoop001 .ssh]# chmod 600 authorized_keys
- 将hadoop-master的公钥传送到所有的slave上,实现hadoop-master无密码登陆到所有slave上
scp authorized_keys hadoop@hadoop-slave1:~/.ssh/
2. 常用指令
sync # 将数据由内存同步到硬盘中。
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:
shutdown –h 10 # 这个命令告诉大家,计算机将在10分钟后关机
shutdown –h now # 立马关机
shutdown –h 20:25 # 系统会在今天20:25关机
shutdown –h +10 # 十分钟后关机
shutdown –r now # 系统立马重启
shutdown –r +10 # 系统十分钟后重启
reboot # 就是重启,等同于 shutdown –r now
halt # 关闭系统,等同于shutdown –h now 和 poweroff
目录管理:
cd : 切换目录命令!
./ : 当前目录
cd .. : 返回上一级目录
ls (列出目录!)
cd 命令 切换目录
pwd 显示当前用户所在的目录!
mkdir 创建一个目录
rmdir 删除目录
cp (复制文件或者目录)
rm (移除文件或者目录!)
文件属性:
用户和组的概念:
Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登录,不同用户可以执行不同的任务,并且互不影响。
不同用户具有不问的权限,每个用户在权限允许的范围内完成不见的任务,Linux 正是通过这种权限的划分与管理,实现了多用户多任务的运行机制。
每个用户都有唯一的用户名和密码。在登录系统时,只有正确输入用户名和密码,才能进入系统和自己的主目录。
用户组是具有相同特征用户的逻辑集合。简单的理解,有时我们需要让多个用户具有相同的权限,所有用户就具有了和组一样的权限,这就是用户组。
将用户分组是 Linux 系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,很多程序上简化了对用户的管理工作。
ll 查看文件属性
chgrp:更改文件属组
chown:更改文件属主,也可以同时更改文件属组
chmod:更改文件9个属性
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限 r:4 w:2 x:1
chomd 777 文件赋予所有用户可读可执行!
文件管理:
cat 由第一行开始显示文件内容,用来读文章,或者读取配置文件啊,都使用cat名
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
nl 显示的时候,顺道输出行号!
more 一页一页的显示文件内容,带余下内容的
head 只看头几行 通过 -n 参数来控制显示几行!
tail 只看尾巴几行 -n 参数 要查看几行!
man [命令]来查看各个命令的使用文档
ifconfig 命令查看网络配置!
touch 命令创建文件!
echo 输入字符串,也可以输入到文件中!
ln :在文件和目录之间建立链接
链接分“软链接”和“硬链接”
1.软链接:
ln–s /usr/share/do doc :创建一个链接文件doc,并指向目录/usr/share/do
2.硬链接:
ln /usr/share/test hard:创建一个硬链接文件hard,这时对于test文件对应 的存储区域来说,又多了一个文件指向它
zip:压缩文件
unzip:解压文件
gzip:压缩文件
tar:归档文件
-z参数将归档后的归档文件进行gzip压缩以减少大小。
-c:创建一个新tar文件
-v:显示运行过程的信息
-f:指定文件名
-z:调用gzip压缩命令进行压缩
-t:查看压缩文件的内容
-x:解开tar文件
tar -zxvf
用户管理:
useradd 命令 添加用户
userdel 删除用户
usermod 修改用户
su username 切换用户的命令
sudo su 从普通用户切换到root用户
用户组管理:
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发、测试、运维、root)。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新
groupadd 创建一个用户组
groupdel 删除用户组
groupmod -g -n 修改用户组的权限信息和名字
磁盘/内存管理:
df (列出文件系统整体的磁盘使用量)
du(检查磁盘空间使用量!)
dmesg 功能:显示系统诊断信息、操作系统版本号、物理内存的大小以及其它信息
free 功能:用于查看系统内存,虚拟内存(交换空间)的大小占用情况
通过“/proc/meminfo”来检查内存使用状况。这个动态更新的虚拟文件事实上是诸如free,top和ps这些与内存相关的工具的信息来源。从可用/闲置物理内存数量到等待被写入缓存的数量或者已写回磁盘的数量,只要是你想要的关于内存使用的信息,“/proc/meminfo”应有尽有。特定进程的内存信息也可以通过“/proc/statm”和“/proc/status”来获取。
进程管理:
1、在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号!
2、每一个进程呢,都会有一个父进程!
3、进程可以有两种存在方式:前台!后台运行!
4、一般的话服务都是后台运行的,基本的程序都是前台运行的
ps 查看当前系统中正在执行的各种进程的信息!
-a 显示当前终端运行的所有的进程信息(当前的进程一个)
-u 以用户的信息显示进程
-x 显示后台运行进程的参数!
# ps -aux 查看所有的进程
ps -aux|grep mysql
# | 在Linux这个叫做管道符 A|B
# grep 查找文件中符合条件的字符串!
ps -ef:可以查看到父进程的信息
kill -9 进程的id 杀掉进程
防火墙:
# 查看firewall服务状态
systemctl status firewalld
# 开启、重启、关闭、firewalld.service服务
# 开启
service firewalld start
# 重启
service firewalld restart
# 关闭
service firewalld stop
# 查看防火墙规则
firewall-cmd --list-all # 查看全部信息
firewall-cmd --list-ports # 只看端口信息
# 开启端口
开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent
重启防火墙:systemctl restart firewalld.service
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
3. 网络性能指标
通常是以 4 个指标来衡量⽹络的性能,分别是带宽、延时、吞吐率、 PPS(Packet Per Second),它们表示的意义如下:
- 带宽,表示链路的最⼤传输速率,单位是 b/s (⽐特 / 秒),带宽越⼤,其传输能⼒就越强。
- 延时,表示请求数据包发送后,收到对端响应,所需要的时间延迟。不同的场景有着不同的含义,⽐如可以表示建⽴ TCP 连接所需的时间延迟,或⼀个数据包往返所需的时间延迟。
- 吞吐率,表示单位时间内成功传输的数据量,单位是 b/s(⽐特 / 秒)或者 B/s(字节 / 秒),吞吐受带宽限制,带宽越⼤,吞吐率的上限才可能越⾼。
- PPS,全称是 Packet Per Second(包 / 秒),表示以⽹络包为单位的传输速率,⼀般⽤来评估系统对于⽹络的转发能⼒。
当然,除了以上这四种基本的指标,还有⼀些其他常⽤的性能指标,⽐如:
- ⽹络的可⽤性,表示⽹络能否正常通信;
- 并发连接数,表示 TCP 连接数量;
- 丢包率,表示所丢失数据包数量占所发送数据组的⽐率;
- 重传率,表示重传⽹络包的⽐例;
ifconfig 或者 ip 查看⽹络的配置和状态
netstat 或者 ss ,这两个命令查看 socket、⽹络协议栈、⽹⼝以及路由表的信息
ss 命令输出的统计信息相⽐ netsat ⽐较少, ss 只显示已经连接(estab)、关闭(closed)、孤⼉(orphaned) socket 等简要统计。
⽽ netstat 则有更详细的⽹络协议栈信息,⽐如上⾯显示了 TCP 协议的主动连接(active connections openings)、被动连接(passive connection openings)、失败重试(failed connection attempts)、发送(segments send out)和接收(segments received)的分段数量等各种信息。
sar 命令当前⽹络的吞吐率和 PPS,⽤法是给 sar 增加 -n 参数就可以查看⽹络的统计信息,⽐如
sar -n DEV,显示⽹⼝的统计数据;
sar -n EDEV,显示关于⽹络错误的统计数据;
sar -n TCP,显示 TCP 的统计数据
4. PV/UV
- 查看日志 nginx 的 access.log ⽇志 ls -lh 命令查看⽇志⽂件的⼤⼩
- 如果⽇志⽂件数据量太⼤,你直接⼀个 cat 命令⼀执⾏,是会影响线上环境,加重服务器的负载,严重的话,可能导致服务器⽆响应。我们可以使⽤ scp 命令将⽂件传输到闲置的服务器再分析。 cat 命令是⽤来查看⽂件内容的,但是⽇志⽂件数据量有多少,它就读多少,很显然不适⽤⼤⽂件。对于⼤⽂件,我们应该养成好习惯,⽤ less 命令去读⽂件⾥的内容,因为 less 并不会加载整个⽂件,⽽是按需加载,先是输出⼀⼩⻚的内容,当你要往下看的时候,才会继续加载。
- wc -l 统计有多少PV
- awk 命令默认是以「空格」为分隔符,进行分组 awk ‘print $4’ access.log 命令把访问时间的信息过滤出来
awk分组聚合:
- sort ,对信息排序;
- uniq ,去除重复的记录;
- wc -l ,查看记录条数;
以上是关于Linux命令总结的主要内容,如果未能解决你的问题,请参考以下文章
Linux Shell脚本 && Linux C程序 获取指定的范围内 or 系统可用端口