hadoop命令:
kinit < passwd
hadoop fs -ls /user/
hadoop fs -put file /user/
alias bhive=beeline -u "hadoop.com" --hivevar user=hongshaofen
bhive -f obtain_log_wjwl_0902.sql
hadoop fs -getmerge /user/hive/warehouse/tj_tmp.db/hongshaofeng_monitorlog_jryk_20210902 hongshaofeng_monitorlog_jryk_20210902.tsv(大写会变小写)
hadoop fs -ls /user/hive/warehouse/tj_tmp.db/ |grep hongshaofeng
yarn application -list :显示当前集群中的任务列表,任务状态包含:SUBMITTED,ACCEPTED,RUNNING
yarn application -kill [application ID] :application ID可以使用list获得,停止指定ID的集群中的任务。KILL后的认为状态为KILLED。
linux 常用语法:
快捷键:ctrl +A 回到行首,ctrl +E 回到行尾,ctrl+u删除所有输入的字符,ctrl+w删除最近一个单词。ctrl+c退出回到终端,ctrl+z 退出python命令。
home,0回到行首,end、$回到行尾,u撤回。
0、文件权限:
d表示文件夹,-表示普通文件。rwx表示权限,r可读,w可写,x可执行,---表示不可读不可写不可执行。
1、查看命令
ll | grep name
ls -a
ls -lh
du -h
cat log.txt|tail -n +1000|head -n 20 查看log.txt的前20行到1000
sed -n 100,120p log.txt 100
cat shaofeng02 | head -n1 | awk '{print NF}'
cat shaofeng02 | awk '{print NF}'
wc -l shaofeng02
wc -c filename 输出 filename 的字节数
wc -m filename 输出 filename 的字符数
wc -w filename 输出 filename 的单词数
wc -L filename 输出 filename 文件里最长的那一行是多少个字符数
awk 'NR==m' filename //查看filename文件的第m行
0、cp命令
cp ../file .
cp ../file file_new
cp -r ../file .
1、 rm删除命令
rm file -fr
ls | grep -v tmp | xargs rm 删除除了tmp文件外的所有文件!
rm -rf !(keep1 | keep2)
精确删除数据:rm -rf *.txt
rm save/{1131,1132}
1、cd命令
cd -:Linux 命令行下执行该命令,会将当前目录切换到上一次所在目录
cd / 切换到根目录
cd ~ 切换到环境
2、find命令
find / -name 'ins*'
find /-name '*.txt'
find / -name '*of*'
find / -type f-size +100M
find / -type f-size +1G
3、grep命令
grep命令一般很少单独使用,都是和管道结合使用
grep 1ang anaconda-ks.cfg
4、which命令
which查看可执行文件的位置。
which 1s
5、ps命令
ps
ps-ef
6、管道命令
将前边命令的输出作为后边命令的输入
ps-ef | grep mysqld
7、普通用户hongshaofeng登录$:超级用户root
8、添加或删除用户 addr:10.11.4.108 |Bcast:10.11.7.255 Mask:255.255.248.0
uesradd -r 用户名
userdel -r 用户名
passwd hongshaofeng
9、用户权限管理-chmod命令 rwx 默认是421
使用方式1:
chmod +x a.txt
chmod u+x a.txt
chmod 777 a.txt
一个文件刚创建时,默认的权限就是:644
9:网络管理命令
Linux查看IP地址:ifconfig
Windows查看ip地址:ipconfig
10、创建软连接,快捷方式
ln -s ../tj_model_lib-master/test_model_cp.py run_model.py
11、查看历史命令
history:查看历史命令,默认可存1000多条
history 100 查看100条
12、查看应用进程列表
yarn application -list |grep application_1628044774004_270410
13、sz下载,rz上传
sz data_save/1125/{wjwl_1125.png,jryk_1125.png}
14、随机取样:
shuf -n50000 hongshaofeng_monitorlog_rong360_v2_20210815.tsv >rong360v2_20210815.txt
head -n50000 hongshaofeng_monitorlog_rong360_v2_20210815.tsv >rong360v2_20210815.txt
shuf hongshaofeng_monitorlog_wjwl_20210902.tsv -n 100000 --random-source='seed' > wjwl_20210902.txt
15、nohup后台挂起
nohup python3.6 split.py Yixin_20211013_1.txt > runoob.log 2>&1 &
16、查看、杀死进程
top 查看进程
htop可以以规则形式展示
ps -aux | grep dict_to_df.py
kill 57215
kill -STOP 1234 // 将该进程暂停
kill -CONT 1234 // 它恢复到后台(很多在前台运行的程序这样是不行的)
kill -9 强制终止退出, 例如: kill -9 3781
17、stat test.file
ps显示进程信息,参数可省略
-aux 以BSD风格显示进程 常用
-efH 以System V风格显示进程
-e , -A 显示所有进程
a 显示终端上所有用户的进程
x 显示无终端进程
u 显示详细信息
f 树状显示
w 完整显示信息
l 显示长列表
18、|管道符,当前输出作为下一输入
alias mykinit='echo zw503KWd|kinit shiyunping'
19、alias 给命令起别名 =前后不能有空格,value内有空格,要用引号!如果想永久生效,就把这条写入到 /bin/.bashrc里面
alias bhive="beeline -u 'jdbc:hive2://bi-hadoop02.b28.rong360.com:10000/mkt;principal=hive/bi-hadoop02.b28.rong360.com@RONG360.COM'"
alias python='/usr/local/bin/python2.7'
20.crontab 定时任务
定时任务:crontab -e进入编辑模式!每天点半执行这个shell,并输出追加到log.txt。多个就多加一行写在下方即可!
(base) [hongshaofeng@dx-tjmodeclient01 hongshaofeng]$ crontab -l
30 9 * * * cd /data/hongshaofeng/NV_score_monitorLogGenerate && bash /data/hongshaofeng/NV_score_monitorLogGenerate/shell.sh >> /data/hongshaofeng/NV_score_monitorLogGenerate/log.txt 2>&1
touch log_$(date +%Y%m%d).txt
30 */6 * * * /home/test.sh
30 3,12 * * * /home/test.sh
20、文件写入操作sed awk grep
head -n 240076 p_train.json > p_train2.json
sed -i '1r a2.txt' a1.txt
sed '$a helloworld' test.txt
sed -i '$r 1.txt' 2.txt
sed -i '1d' Yixin_20211013_3.txt
sed -i '$d' Yixin_20211013_3.txt
sed -n "2, 1p" filename | awk 'print $1'
sed 's/r/a/g' test.txt
sed 's/r/a/gi' test.txt
sed -r 's/r/a/gi' test.txt
sed '2c helloworld' test.txt
sed 's/^r/a/g' test.txt
sed -n '2,5p' test.txt
sed "s/lyl_zaxd_622_all/$file_name/g" hivesql.txt>current_running2.txt
sed "s/lvm_multi_/zt_multi_plus_feature/g" xiaohua.txt > xiaohua.txt2.txt
sed -i "\$c$sql_parameter" current_running2.txt
ps:/^ */ 匹配以空格开头的字符
/^\s/ 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]
/^[[:space:]]*/ 匹配以空格或者是\t制表符开头的字符
+g :匹配每一行有行首到行尾的所有字符
不加g:匹配每一行的行首开始匹配,匹配到第一个符合的字段,就会结束,跳到下一行
awk 'BEGIN{OFS="\t";}{$2="";$3="";print $0}' yixin_1.txt >yixin_1_tuomin.txt
awk '{print $1,$5,$6,$4,}' yixin_1.txt >yixin_1_key.txt
awk 'NR==1{print}' filename
awk -F ',' '{print $1}' filename
awk '{print $1 $2}' filename
awk 'END{print NR}' filename
1、yy 复制第一行,然后用p进行粘贴。(nyy复制n行)
2、head -n 1 hbxj_20211011_fea2.txt > 1111.txt
3、sed -i '1 r rong360_fq_fea_head.txt' rong360_fq_fea_10w.txt
4、dd删除第一行。
删除文件 text中第一列
方式一:awk '{$1="";print $0}' text
方式二:sed -e 's/[^ ]* //' text
21、压缩和解压缩命令
Linux的压缩包后缀一般是:.tar.gz
-c或--create 建立新的备份文件。
-x或--extract或--get 从备份文件中还原文件。
-z或--gzip或--ungzip 通过gzip指令处理备份文件。
-v或--verbose 显示指令执行过程。
-f<备份文件>或--file=<备份文件> 指定备份文件。
tar -zxvf snappy-1.1.1.tar.gz
tar -xvf snappy-1.1.1.tar.gz -C/opt
unzip mysql-connector-java-8.0.13.zip 默认解压到当前目录!!!!!!
unzip -d/opt mysql-connector-java-8.0.13.zip 解压到指定目录!!!!!!!
unzip mysql-connector-java-8.0.13.zip -d/opt
unzip -l n30_new.zip
unzip -n test.zip
unzip -d /temp test.zip
tar -czvf wjwl.tar.gz wjwl_20211011_fea.txt
tar -czvf /root/dir/snappy-1.1.1.tar.gz /opt/server/snappy-1.1.1
tar -zcvf /home/users/xiesiya/data_cut/cy_947_sample_1.tar.gz /home/users/xiesiya/data_cut/cy_947_sample_1.tsv
zip -r mysq1-connector-java-8.0.13.zip mysql-connector-java-8.0.13/
zip -r wjwl.tar.gz wjwl_20211011_fea.txt
22、查看内存,占用情况
nvidia-smi -l 服务器查看GPU使用情况 , 在命令行输入
top -bn 1 -i -c 查看cpu占用,dstas -c 也可以 。或者vmstat -w-w
free -m
free
vmstat
ps -aux | sort -k4nr | head -K
df -lh
cat /proc/meminfo
查看系统位数: getconf LONG_BIT
查看CPU信息: 查看cpu个数(几核):cat /proc/cpuinfo |grep "processor"|wc -l
'''
netstat -tunlp | grep 5560 #查看某一端口的使用情况:
PID:进程的ID USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,乙表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
'''
python下quit()退出python!
hostname查看主机名,用ip地址太麻烦。每个电脑都有唯一的ip地址,便于区分,路由器寻找对方主机的参数,子网掩码也可以区分电脑是哪一类地址,abc类,a类国家级的。
23、文件切分与合并
split -l 500000 splitTest.txt 按行切分
24、删除乱码文件
ls -i
find -inum 节点号 -delete
25、vi全局替换方法
语法为 :[addr]s/源字符串/目的字符串/[option]
全局替换命令为::%s/源字符串/目的字符串/g
[addr]: 表示检索范围,省略时表示当前行。
如:“1,20” :表示从第1行到20行;
“%” :表示整个文件,同“1,$”;
“. ,$” :从当前行到文件尾;
s :表示替换操作
[option] :表示操作类型
如:g 表示全局替换;
c 表示进行确认
p 表示替代结果逐行显示(Ctrl + L恢复屏幕);
省略option时仅对每行第一个匹配串进行替换;
如果在源字符串和目的字符串中出现特殊字符,需要用”\”转义
26. join方法
join 1.txt 2.txt
join -a1 1.txt 2.txt
join -a2 1.txt 2.txt
join -a1 -a2 1.txt 2.txt
join -1 2 -2 3 file1.txt file2.txt
join -o 1.1 -o 1.2 -o 1.3 -o 2.1 -o 2.2 -o 2.3 -e 'empty' -a 1 file1.txt file2.txt
join -v1 file1.txt file2.txt
join -v1 -1 2 -2 5 1.txt 2.txt > 3.txt
:s/vivian/sky/ 替换当前行第一个 vivian 为 sky
:s/vivian/sky/g 替换当前行所有 vivian 为 sky
:n,$s/vivian/sky/ 替换第 n 行开始到最后一行中每一行的第一个 vivian 为 sky
:n,$s/vivian/sky/g 替换第 n 行开始到最后一行中每一行所有 vivian 为 sky
(n 为数字,若 n 为 .,表示从当前行开始到最后一行)
:%s/vivian/sky/(等同于 :g/vivian/s//sky/)替换每一行的第一个 vivian 为 sky
:%s/vivian/sky/g(等同于 :g/vivian/s//sky/g) 替换每一行中所有 vivian 为 sky
可以使用
:s
:%s+/oradata/apras/+/user01/apras1+ (使用+ 来替换 / ): /oradata/apras/替换成/user01/apras1/
删除文本中的^M
问题描述:对于换行,window下用回车换行(0A0D)来表示,linux下是回车(0A)来表示。这样,将window上的文件拷到unix上用时,总会有个^M,
请写个用在unix下的过滤windows文件的换行符(0D)的shell或c程序。
使用命令:cat filename1 | tr -d “^V^M” > newfile;
使用命令:sed -e “s/^V^M//” filename > outputfilename
需要注意的是在1、2两种方法中,^V和^M指的是Ctrl+V和Ctrl+M。你必须要手工进行输入,而不是粘贴。
在vi中处理:首先使用vi打开文件,然后按ESC键,接着输入命令:
:%s/^V^M//
:%s/^M$//g
如果上述方法无用,则正确的解决办法是:
tr -d “\r” < src >dest
tr -d “\015〃 dest
strings A>B
其它用法
利用 :s 命令可以实现字符串的替换。具体的用法包括:
:s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
:s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
:.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
:1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
:g/str1/s//str2/g 功能同上
27、 tee命令:cat 1.txt | tee 3.txt 查看1文件并写入到3文件,
ls >a.txt,这时我们就不能看到输出了,如果我们既想把输出保存到文件中,又想在屏幕上看到输出内容,就可以使用tee命令了。
tee file 输出到标准输出的同时,保存到文件file中。如果文件不存在,则创建;如果已经存在,则覆盖之。
tee -a file 输出到标准输出的同时,追加到文件file中。如果文件不存在,则创建;如果已经存在,就在末尾追加内容,而不是覆盖。
tee -输出到标准输出两次。
tee file1 file2 - 输出到标准输出两次,同时保存到file1和file2中。
28、wget命令:下载
wget https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.10/ubuntu-20.10-desktop-amd64.iso
wget -d http://192.168.1.168
wget -O https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.10/ubuntu-20.10-desktop-amd64.iso
vi .git/arc/default-relative-commit
vim:
1.删除所有内容命令:ggdG
其中,gg为跳转到文件首行;dG为删除光标所在行以及其下所有行的内容;
再细讲,d为删除,G为跳转到文件末尾行;
编辑模式下,大写的O上方加一行,o下方加一行。全部替换%s/hello/haha/g
按【/】全局搜索
yy复制 5yy复制5行
p粘贴:- p(小写) 在光标位置之后粘贴 - P(大写) 在光标位置之前粘贴
u撤销
dd 删除 5dd删除5行
gg回到文件开头
G回到文件未尾
/Hello 在文件中查找字符串Hello
home行首,end回行尾。
:wq 保存退出
:wq!强制保存退出
:x 保存退出
shift+z+Z 保存退出
:q查看文件内容之后退出
:q!修改内容不想保存退出
:w只保存,不退出
:w b.txt 将当前文件另存为b.txt
:123将光标定位到123行
:%s/Haha/Hello/g 替换
:wq 保存并退出
:set number 显示行号
:set nonumber 隐藏行号
/apache 在文档中查找apache 按n跳到下一个,shift+n上一个
h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
grep '2b5fe08c9b856b9bf17787fe3ae0d3b5' jiufu_meta02
cat jiufu_meta02|grep 9b75a13bad8b9574fac20cc9f3be234a
$ grep –e “正则表达式” 文件名
$ grep –i "被查找的字符串" 文件名
$ grep -l "被查找的字符串" 文件名
拷贝/粘贴 (陈皓注:p/P都可以,p是表示在当前位置之后,P表示在当前位置之前)
P → 粘贴
yy → 拷贝当前行当行于 ddP
yyp 复制光标所在行,并粘贴
2dd → 删除2行
3p → 粘贴文本3次
NG → 到第 N 行
w → 到下一个单词的开头。
e → 到下一个单词的结尾。
% : 匹配括号移动,包括 (, {, [. (陈皓注:你需要把光标先移到括号上)
* 和
^ 到行头
^ → 到行头
<Ctrl-v> → 开始块操作
<Ctrl-d> → 向下移动 (你也可以使用hjkl来移动光标,或是使用%,或是别的)
I-- [ESC] → I是插入,插入“--”,按ESC键来为每一行生效。
自动提示: <C-n> 和 <C-p>
在 Insert 模式下,你可以输入一个词的开头,然后按 <C-p>或是<C-n>,自动补齐功能就出现了……
系统管理命令
stat 显示指定文件的详细信息,比ls更详细
who 显示在线登陆用户
whoami 显示当前操作用户
hostname 显示主机名
uname 显示系统信息
top 动态显示当前耗费资源最多进程信息
ps 显示瞬间进程状态 ps -aux
du 查看目录大小 du -h /home带有单位显示目录信息
df 查看磁盘大小 df -h 带有单位显示磁盘信息
ifconfig 查看网络情况
ping 测试网络连通
netstat 显示网络状态信息
man 命令不会用了,找男人 如:man ls
clear 清屏
alias 对命令重命名 如:alias showmeit="ps -aux" ,另外解除使用unaliax showmeit
kill 杀死进程,可以先用ps 或 top命令查看进程的id,然后再用kill命令杀死进程。
打包压缩相关命令
gzip:
bzip2:
tar: 打包压缩
-c 归档文件
-x 压缩文件
-z gzip压缩文件
-j bzip2压缩文件
-v 显示压缩或解压缩过程 v(view)
-f 使用档名
例:
tar -cvf /home/abc.tar /home/abc 只打包,不压缩
tar -czvf /home/abc.tar.gz /home/abc 打包,并用gzip压缩
tar -jcvf /home/abc.tar.bz2 /home/abc 打包,并用bzip2压缩
当然,如果想解压缩,就直接替换上面的命令 tar -cvf / tar -zcvf / tar -jcvf 中的“c” 换成“x” 就可以了。
关机/重启机器
shutdown
-r 关机重启
-h 关机不重启
now 立刻关机
halt 关机
reboot 重启
用户及用户组管理
/etc/passwd 存储用户账号
/etc/group 存储组账号
/etc/shadow 存储用户账号的密码
/etc/gshadow 存储用户组账号的密码
useradd 用户名
userdel 用户名
adduser 用户名
groupadd 组名
groupdel 组名
passwd root 给root设置密码
su root
su - root
/etc/profile 系统环境变量 win+r ----sysdm.cpl
bash_profile 用户环境变量
.bashrc 用户环境变量
su user 切换用户,加载配置文件.bashrc
su - user 切换用户,加载配置文件/etc/profile ,加载bash_profile
更改文件的用户及用户组
sudo chown [-R] owner[:group] {File|Directory}
例如:还以jdk-7u21-linux-i586.tar.gz为例。属于用户hadoop,组hadoop
要想切换此文件所属的用户及组。可以使用命令。
sudo chown root:root jdk-7u21-linux-i586.tar.gz
更改权限
sudo chmod [u所属用户 g所属组 o其他用户 a所有用户] [+增加权限 -减少权限] [r w x] 目录名
例如有一个文件filename,权限为“-rw-r----x” ,将权限值改为"-rwxrw-r-x",用数值表示为765
sudo chmod u+x g+w o+r filename
上面的例子可以用数值表示
sudo chmod 765 filename
cur_dateTime="`date +%Y-%m-%d,%H:%m:%s`"
shell脚本:chmod +x test.sh
date_info=$(date -d "yesterday" +%Y%m%d)
date +"%Y-%m-%d"
date +'%Y%m%d'
date +'%m%d'
date +'%F'
date -d "10 day ago" +%Y%m%d
date -d "yesterday 20150401 " +%Y%m%d
file=/dir1/dir2/dir3/my.file.txt
可以用${ }分别替换得到不同的值:
${file
${file
${file
${file
${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3
${file%%/*}:删掉第一个 / 及其右边的字符串:(空值)
${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file
${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
记忆的方法为:
%是去掉右边(键盘上% 在$ 的右边)
单一符号是最小匹配;两个符号是最大匹配
${file:0:5}:提取最左边的 5 个字节:/dir1
${file:5:5}:提取第 5 个字节右边的连续5个字节:/dir2
也可以对变量值里的字符串作替换:
${file/dir/path}:将第一个dir 替换为path:/path1/dir2/dir3/my.file.txt
${file//dir/path}:将全部dir 替换为 path:/path1/path2/path3/my.file.txt
export CDH_HOME="/opt/cloudera/parcels/CDH"
export HADOOP_HOME="/opt/cloudera/parcels/CDH/lib/hadoop"
export HIVE_HOME="/opt/cloudera/parcels/CDH/lib/hive"
export HADOOP_CONF_DIR="/etc/hadoop/conf"
export HIVE_CONF_DIR="/etc/hive/conf"
export HADOOP_VERSION=2.6.0-cdh5.13.3
export JAVA_HOME="/opt/jdk1.8.0_51"
PATH="$PATH:$JAVA_HOME/bin"
export PATH
source ~/.bashrc
echo $(which python)
kinit< passwd
date_info=$(date +%m%d)
dir_res="./save/"$date_info
if [ ! -e $dir_res ];then
mkdir -p $dir_res
fi
date_save="./date_save"
if [ ! -e $date_save ];then
mkdir -p $date_save
fi
while read -r line
do
if [ "${line:0:3}" != "END" ];then
echo $line
org_parameter=${line%%//*}
file_name="hsf_"$org_parameter"_"$date_info
file_name_with_format=$date_save"/"$file_name".tsv"
temp=${line%//*}
sql_parameter=${temp
sed "s/lyl_zaxd_622_all/$file_name/g" hivesql.txt>current_running.txt
sed -i "\$c$sql_parameter" current_running.txt
$(/usr/bin/beeline -u "jdbc:hive2://bi-hadoop02.b28.rong360.com:10000/mkt;principal=hive/bi-hadoop02.b28.rong360.com@RONG360.COM" -f current_running.txt)
$(/usr/bin/hdfs dfs -getmerge hdfs://nameservice1/user/hive/warehouse/tj_tmp.db/$file_name $file_name_with_format)
sed "s/lyl_zaxd_622_all/$file_name/g" hivesql.txt>current_running2.txt
sed -i "\$c$sql_parameter" current_running2.txt
$(/usr/bin/beeline -u "jdbc:hive2://bi-hadoop02.b28.rong360.com:10000/mkt;principal=hive/bi-hadoop02.b28.rong360.com@RONG360.COM" -f current_running2.txt)
$(/usr/bin/hdfs dfs -getmerge hdfs://nameservice1/user/hive/warehouse/tj_tmp.db/$file_name $file_name_with_format)
python ./report_generate.py $python_parameter
fi
done < ./parameter.txt
cd ./save
tar_name=$date_info".tar.gz"
tar -czvf $tar_name $date_info
set mapreduce.job.queuename=tj;