Linux运维命令(大数据,持续更新)

Linux运维命令:

防火墙:

1、查看firewall服务状态:
systemctl status firewalld
出现Active: active (running)切高亮显示则表示是启动状态。
出现 Active: inactive (dead)灰色表示停止,看单词也行。
2、查看firewall的状态:
firewall-cmd --state
3、开启firewalld.service服务:
service firewalld start
重启:service firewalld restart
关闭:service firewalld stop
4、查看防火墙规则:
firewall-cmd --list-all 
5、查询、开放、关闭端口:
查询端口是否开放:firewall-cmd --query-port=8080/tcp
开放80端口:firewall-cmd --permanent --add-port=80/tcp
移除端口:firewall-cmd --permanent --remove-port=8080/tcp
重启防火墙(修改配置后要重启防火墙):firewall-cmd --reload

查看端口:

netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。

netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
例如查看 8000 端口的情况,使用以下命令:

netstat -tunlp | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      26993/nodejs   

更多命令:

netstat -ntlp   //查看当前所有tcp端口
netstat -ntulp | grep 80   //查看所有80端口使用情况
netstat -ntulp | grep 3306   //查看所有3306端口使用情况

lsof多重用法:

lsof -i //显示所有网络连接
lsof -i:80 //查看所有80端口使用情况
lsof  -i@129.128.122.15 //检查是否开放连接到网络中或互联网上某个指定主机的连接
lsof  -i -sTCP:LISTEN //找出正等候连接的端口。
lsof  -u hdfs//使用-u显示指定hdfs用户打开了什么
kill  -9  `lsof -t -u hdfs` //杀死指定用户所做的一切事情,-t选项只返回PID

lsof  -c syslog-ng  //使用-c查看指定的命令正在使用的文件和网络连接
lsof  -p 10075  //使用-p查看指定进程ID已打开的内容

lsof  /var/log/messages/ //显示与指定目录交互的所有一切
lsof  /home/daniel/firewall_whitelist.txt //显示与指定文件交互的所有一切

lsof  -u hdfs -i @129.128.122.15 //显示hdfs连接到129.128.122.15所做的一切

curl命令:

# 调试类
-v, --verbose                          输出信息
-q, --disable                          在第一个参数位置设置后 .curlrc 的设置直接失效,这个参数会影响到 -K, --config -A, --user-agent -e, --referer
-K, --config FILE                      指定配置文件
-L, --location                         跟踪重定向 (H)

# CLI显示设置
-s, --silent                           Silent模式。不输出任务内容
-S, --show-error                       显示错误. 在选项 -s 中,当 curl 出现错误时将显示
-f, --fail                             不显示 连接失败时HTTP错误信息
-i, --include                          显示 response的header (H/F)
-I, --head                             仅显示 响应文档头
-l, --list-only                        只列出FTP目录的名称 (F)
-#, --progress-bar                     以进度条 显示传输进度

# 数据传输类
-X, --request [GET|POST|PUT|DELETE|]  使用指定的 http method 例如 -X POST
-H, --header <header>                  设定 request里的header 例如 -H "Content-Type: application/json"
-e, --referer                          设定 referer (H)
-d, --data <data>                      设定 http body 默认使用 content-type application/x-www-form-urlencoded (H)
    --data-raw <data>                  ASCII 编码 HTTP POST 数据 (H)
    --data-binary <data>               binary 编码 HTTP POST 数据 (H)
    --data-urlencode <data>            url 编码 HTTP POST 数据 (H)
-G, --get                              使用 HTTP GET 方法发送 -d 数据 (H)
-F, --form <name=string>               模拟 HTTP 表单数据提交 multipart POST (H)
    --form-string <name=string>        模拟 HTTP 表单数据提交 (H)
-u, --user <user:password>             使用帐户,密码 例如 admin:password
-b, --cookie <data>                    cookie 文件 (H)
-j, --junk-session-cookies             读取文件中但忽略会话cookie (H)
-A, --user-agent                       user-agent设置 (H)

# 传输设置
-C, --continue-at OFFSET               断点续转
-x, --proxy [PROTOCOL://]HOST[:PORT]   在指定的端口上使用代理
-U, --proxy-user USER[:PASSWORD]       代理用户名及密码

# 文件操作
-T, --upload-file <file>               上传文件
-a, --append                           添加要上传的文件 (F/SFTP)

# 输出设置
-o, --output <file>                    将输出写入文件,而非 stdout
-O, --remote-name                      将输出写入远程文件
-D, --dump-header <file>               将头信息写入指定的文件
-c, --cookie-jar <file>                操作结束后,要写入 Cookies 的文件位置
#抓取页面内容到一个文件中
curl -o home.html  http://www.sina.com.cn
#模拟用户登录,此参数相当于设置http头 Authorization:
curl --user user:password http://blog.mydomain.com/login.php
curl 127.0.0.1:80

systemctl命令

systemctl start $服务	启动服务
systemctl stop $服务	停止服务
systemctl restart $服务	重启服务
systemctl status $服务	查看服务详细的运行状态
systemctl disable $服务	让服务开机不要运行
systemctl enable $服务	让服务开机运行
systemctl is-active $服务	检查确认服务是否运行
systemctl is-enable $服务	检查确认服务是否运行

编辑查看文件:

1、vim:

vim 编辑,遇到突然中断,重新vim 打开之前在编辑的文件,会有类似如下的警告:
在这里插入图片描述

执行D,会在打开文件前把这个暂存文件删除
也可以按下q 离开vim,回到命令提示符,手动删除缓存文件  rm -rf 缓存文件名。以.swp结尾的是缓存文件。

2、less/more:查看日志的时候使用。

less添加以下字符的作用:::::
-N	显示每行的行号。
-S	行过长时将超出部分舍弃。
-e	当文件显示结束后,自动离开。
-g	只标志最后搜索到的关键同。
-Q	不使用警告音。
-i	忽略搜索时的大小写。
-m	显示类似 more 命令的百分比。
-f	强迫打开特殊文件,比如外围设备代号、目录和二进制文件。
-s	显示连续空行为一行。
-b <缓冲区大小>	设置缓冲区的大小。
-o <文件名>less 输出的内容保存到指定文件中。
-x <数字>	将【Tab】键显示为规定的数字空格。
less打开文件后可执行的操作::::
/字符串	向下搜索“字符串”的功能。
?字符串	向上搜索“字符串”的功能。
n	重复*前一个搜索(与 / 成 ? 有关)。
N	反向重复前一个搜索(与 / 或 ? 有关)。
b	向上移动一页。
d	向下移动半页。
h 或 H	显示帮助界面。
q 或 Q	退出 less 命令。
y	向上移动一行。
空格键	向下移动一页。
回车键	向下移动一行。
PgDn键	向下移动一页。
PgUp键	向上移动一页。
Ctrl+f	向下移动一页。
Ctrl+b	向上移动一页。
Ctrl+d	向下移动一页。
Ctrl+u	向上移动半页。
j	向下移动一行。
k	向上移动一行。
G	移动至最后一行。
g	移动到第一行。
ZZ	退出 less 命令。
v	使用配置的编辑器编辑当前文件。
[	移动到本文档的上一个节点。
]	移动到本文档的下一个节点。
p	移动到同级的上一个节点。
u	向上移动半页。

3、tail -f:实时监控日志

tail -100f file 显示最后100行再实时监控
tail -c 50 file 从50字节位置读取指定文件
tail -n 50 file 显示最后50行

4、cat :查看文件

cat file |wc -l   统计文件行数
ls -l | grep "^-" | wc -l   统计当前目录下文件的个数(不包括目录)
ls -lR| grep "^-" | wc -l	统计当前目录下文件的个数(包括子目录)
ls -lR | grep "^d" | wc -l	查看某目录下文件夹(目录)的个数(包括子目录)

5、diff 比较文本文件:

diff <变动前的文件> <变动后的文件>
diff file1 file2
#上下文格式的diff,它的使用方法是加入c参数
diff -c file1 file2
#合并格式的diff,将f1和f2的上下文合并在一起显示。它的使用方法是加入u参数:
diff -u file1 file2
#git格式的diff,版本管理系统git,使用的是合并格式diff的变体

定时任务crontab

crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数 
来指定使用那个文字编辑器(比如说 setenv VISUAL joe) 
crontab -r : 删除目前的时程表 
crontab -l : 列出目前的时程表 
f1 f2 f3 f4 f5 program 
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执 
行的程序

Linux修改系统时间

#修改为北京时间
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#临时修改系统时间
hwclock --set --date '2022-08-20 00:00:05'

#永久修改系统时间
hwclock --show
hwclock --set --date '2022-08-20 00:00:05'
hwclock --hctosys
clock -w
hwclock --show

Linux用户操作

#查看系统当前登录用户
w
 03:46:23 up  2:08,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
zzx      pts/0    192.168.56.1     03:38    7.00s  0.03s  0.03s -bash
root     pts/1    192.168.56.1     01:40    7.00s  0.69s  0.00s w
#useradd添加用户
#useradd命令一般用于添加用户,该命令常见参数如下:
-M 表示不创建家目录
-s 表示指定用户的shell环境
-u 表示指定用户的uid
-g 表示指定用户的gid(需要指定的gid存在)
-p 指定用户的密码(必须以密文的方式指定)
-G 表示指定用户的附属组(需要指定的gid存在)
使用示例:
useradd zzx

#userdel删除用户
userdel zzx
#更改用户密码
passwd zzx
#BAD PASSWORD: The password is shorter than 8 characters
#Linux用户密码太简单会报这个错误。可用这个命令设置
echo zzx|passwd --stdin zzx


#####Linux中普通用户配置sudo权限(带密或免密)########
#1、添加sudo文件的写权限,命令是:
chmod u+w /etc/sudoers
#2、编辑sudoers文件:
#找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (注:这里的xxx是你的用户名)
vi /etc/sudoers
zzx ALL=(ALL) NOPASSWD:ALL

#xxx ALL=(ALL) ALL   #允许用户youuser执行sudo命令(需要输入密码)。
#%xxx ALL=(ALL) ALL   #允许用户组youuser里面的用户执行sudo命令(需要输入密码)。
#xxx ALL=(ALL) NOPASSWD: ALL  #允许用户youuser执行sudo命令,并且在执行的时候不输入密码。
#%xxx ALL=(ALL) NOPASSWD: ALL  #允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码。
#3、撤销sudoers文件写权限,命令:chmod u-w /etc/sudoers
#普通用户就可以使用sudo了。



查看连接数

##查看总连接数
netstat -na | grep 2181 | wc -l
1232
##查看各种连接状态 连接数
netstat -an| grep 2181 |awk '$1~/tcp/{aa[$NF]++}END{for (h in aa)print h,aa[h]}'
LISTEN 1
CLOSE_WAIT 1
ESTABLISHED 1203
SYN_SENT 1
TIME_WAIT 13

##查看各IP 连接数
netstat -an| grep 2181 | awk '{print $5}' |awk -F: '{print $1}' | sort | uniq -c | sort -rn 

netstat -an| grep ESTABLISHED | awk '{print $5}' |awk -F: '{print $1}' | sort | uniq -c | sort -rn

HADOOP

YARN命令:

防火墙:

systemctl start firewalld.service
systemctl stop firewalld.service
systemctl status firewalld.service
--添加规则add,去除规则remove
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.9.250.0/24" accept"
--指定端口对指定IP开放:
firewall-cmd --permanent --zone=public --add-rich-rule 'rule family="ipv4" port protocol="tcp" port="5006" source address="10.9.250.117" accept' 
--开启0-5002端口
firewall-cmd --permanent --zone=public --add-port=0-5002/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口

hive

hive连接:
kinit -kt /export/kerberos/1/hive.keytab hive/ocean@JD.COM
beeline -u 'jdbc:hive2://11.243.32.215:10000/default;principal=hive/jxq-11-243-32-215.h.abchost.local@JD.COM'
UDF函数相关操作:
hdfs dfs -put dependencies.jar /udf
create function dw_join as 'com.jd.jr.udf.kms.KmsDecodeIndex' using jar 'hdfs:///udf/dependencies.jar';
reload function;
DROP FUNCTION IF EXISTS dw_join;

hive库表权限

一、库级的权限
-- 授予所有权限给某个用户
grant all on msta to user {userName};
-- 授权admin privilege权限
grant ADMIN PRIVILEGE on database {dbName} to user {userName};

-- 授予某个库的权限给某个用户
grant select on database {dbName} to user {userName};
grant insert on database {dbName} to user {userName};
grant update on database {dbName} to user {userName};
grant delete on database {dbName} to user {userName};

-- 回收某个库的权限给某个用户
revoke select on database {dbName} from user {userName};
revoke insert on database {dbName} from user {userName};
revoke update on database {dbName} from user {userName};
revoke delete on database {dbName} from user {userName};

-- 查看指定用户在所有库下面的权限
show grant user {userName};
-- 查看指定用户在某个库的权限
show grant user {userName} on database {dbName};
二、表级的权限
-- 授予表的权限给某个用户
grant create on database {dbName} to user {userName};
grant select on table {dbName}.tableName to user {userName};
grant insert on table {dbName}.tableName to user {userName};
grant update on table {dbName}.tableName to user {userName};
grant delete on table {dbName}.tableName to user {userName};


-- 回收某个用户的表的权限
revoke create on table {dbName}.tableName from user {userName}; 
revoke select on table {dbName}.tableName from user {userName};
revoke insert on table {dbName}.tableName from user {userName};
revoke update on table {dbName}.tableName from user {userName}; 
revoke delete on table {dbName}.tableName from user {userName};

-- 查看指定用户在指定表的权限
show grant user {userName} on table {dbName}.{tableName};

hbase

hbase连接:
kinit -kt /export/kerberos/1/hbase.keytab hbase/ocean@JD.COM
hbase shell
查看表行数:
hbase org.apache.hadoop.hbase.mapreduce.RowCounter '表名'

su - hbase
#指定表检查
hbase hbck id_card_sm3
#修复
hbase hbck -fixAssignments  id_card_sm3
#检查hbase regionserver进程
#!/bin/bash
hbaseregionexists=$(ps aux|grep hbase.regionserver.HRegionServer | grep -v grep | wc -l)
hbaseregionpid=$(ps aux|grep hbase.regionserver.HRegionServer | grep -v grep |  awk '{ print $2; }')
echo hbase regionserver进程存在,进程ID为###### ${hbaseregionpid},进程数####${hbaseregionexists}
if [ "${hbaseregionexists}" = 0 ]
    then
    echo 服务上没有hbase regionserver进程执行,准备重启
    su - hdfs -c -l "/export/hbase/bin/hbase-daemon.sh restart regionserver"
fi
echo 脚本执行完成

mysql

MySQL连接:
mysql -h192.168.56.70 -uroot -Dstudent -p
95Sy[]M


修改MySQL密码策略(仅在当前窗口生效)set global validate_password.policy=LOW;
set global validate_password.mixed_case_count=0;
set global validate_password.number_count=0; 
set global validate_password.special_char_count=0; 
set global validate_password.length=1;
set global validate_password.check_user_name='OFF';

create database zabbix character set utf8 collate utf8_bin;
create user zabbix@'%' identified by 'password';
grant all privileges on zabbix.* to zabbix@'%';

zcat

zcat命令用于不真正解压缩文件,就能显示压缩包中文件的内容的场合。
zcat与运行gunzip -c命令完全相同。

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -h192.168.56.70 -uzabbix -p zabbix

jmap

jmap -heap pid
netstat -na | grep 2181 | wc -l
netstat -na |grep ^tcp| awk '{++S[$NF]} END {for(a in S) print a, S[a]}'



1.63 0.61 0.22 1/228 2487
1.63(1分钟平均负载) 0.61(5分钟平均负载) 0.22(15分钟平均负载) 1/228(分子是当前正在运行的进程数,分母是总的进程数) 2487(最近运行进程的ID)

#打印dump包
jmap -dump:format=b,file=user.dump pid

#3秒打印一次gc信息
jstat -gc pid 3000

#-r:内存  -u:CPU  -d:IO
pidstat -r -p pid

top

top -H -p  pid               
 --查看进程下的所有线程 ,看线程占用cpu和内存 的使用情况,找到较高的线程id(4277)
printf "%x\n" 4277                 
 --用printf "%x\n" 4277 拿到4277的16进制数为10b5
jstack -l pid | grep <线程id的16进制数>
jstack -l pid| grep 10b5  -C5 --color  --找到该进程下的线程信息

ps -mp pid -o THRAD,tid,time

ROOT命令行使用其它用户执行命令

su - hdfs -c -l "/export/hbase/bin/hbase-daemon.sh restart regionserver"

yum

配置阿里yum源
cd /etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#以下两条命令在换yum源之后必做,不然可能会出问题!
yum clean all            # 清理yum缓存
yum makecache            # 缓存软件包信息(提高搜索/安装软件的速度)

yum下载安装包,但不安装
yum install mariadb-server --downloadonly --downloaddir=/tmp/offline_rpm

搭建私有yum仓库
新建一个repo文件
vi /etc/yum.repos.d/new.repo
写入如下内容并保存
[New]
name=New
baseurl=file:///tmp/offline_rpm
gpgcheck=0
enabled=1

查看Linux服务器信息(CPU,内存,磁盘)

#查看磁盘CPU负载
cat /proc/loadavg
#0.16 0.31 0.33 2/3131 20132
#前三个是1、5、15分钟内的平均进程数。第四个的分子是正在运行的进程数,分母是进程总数;最后一个最近运行的进程ID号
cat /proc/stat
#name   user  nice   system      idle      iowait  irrq  softirq  steal guest guest_nice 
#cpu    60382   1     80032     198934063   2349     0     109      0     0       0
#cpu指标  含义  时间单位    备注
#user   用户态时间   jiffies 一般/高优先级,仅统计nice<=0
#nice   nice用户态时间   jiffies 低优先级,仅统计nice>0
#system 内核态时间   jiffies 
#idle   空闲时间    jiffies 不包含IO等待时间
#iowait I/O等待时间 jiffies 硬盘IO等待时间
#irq    硬中断时间   jiffies 
#softirq    软中断时间   jiffies 
#steal  被盗时间    jiffies 虚拟化环境中运行其他操作系统上花费的时间(since Linux 2.6.11)
#guest  来宾时间    jiffies 操作系统运行虚拟CPU花费的时间(since Linux 2.6.24)
#guest_nice nice来宾时间    jiffies 运行一个带nice值的guest花费的时间(since Linux 2.6.33)
#查看磁盘disk空间
cat /proc/mounts
#f_bsize: 文件系统块大小   f_frsize: 分栈大小    f_blocks: 文件系统数据块总数   f_bfree: 可用块数
#f_bavail:非超级用户可获取的块数  f_files: 文件结点总数  f_ffree: 可用文件结点数   f_favail: 非超级用户的可用文件结点数
#f_fsid: 文件系统标识 ID  f_flag: 挂载标记  f_namemax: 最大文件长度
cat /proc/partitions
major minor   #blocks  name
 253        0  524288000 vda
 253        1       1024 vda1
 253        2   15728640 vda2
 253        3    8388608 vda3
 253        4  500168687 vda4
major 主设备号。3 代表 hda
minor 次设备号。0 代表 第7 分区
#blocks 设备总块数 (1024 bytes/block)。120060864*1024 => 122942324736(bytes) ~122.9GB
Name 设备名称
cat /proc/diskstats
 1         2    3   4      5   6       7       8           9        10        11       12 13     14
 253       0    vda 121382 201 6173670 98593   49222835    14669372 683190480 59714557 0 9379453 52760806
 253       1    vda1 5146  0   519408  1797    0           0       0           0       0 1209      1731
 253       2    vda2 18507 184 1402602 20200   8564711     5339588 198886488 27820389  0 2004173 26859320
 253       3    vda3 1748  0   454352  798     0           0       0           0       0 661       780
 253       4    vda4 94256 17 3237812  74172   23742889    9329784 484303992 26858211  0 8495225 25855383
设备号  次设备号 设备名称 4-7列成功完成读的总次数 合并读次数  读扇区的次数 读操作花的时间 8-11列分别是写 
12列为 I/O的当前进度,只有这个域应该是0,如果这个值为0,同时write_complete read_complete io_processing 一直不变可能就就是IO hang了
13列为 输入输入花的时间(ms),花在I/O操作上的毫秒数,这个域会增长只要field 9不为0。
14列为 输入/输出操作花费的加权毫秒数.

利用sshpass批量实现基于key验证

#!/bin/bash
#192.168.56.{1..200}
#[ -f /root/.ssh/id_rsa ] || 
ssh-keygen -f /root/.ssh/id_rsa -P ''
yum install sshpass -y &> /dev/null

net=192.168.56
user=root
export SSHPASS=vagrant
for ip in {71..74}
do
  sshpass -e ssh-copy-id $net.$ip
  echo $net.$ip,已完成
done
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值