大数据学习之Linux(3)

1.vi 文本编辑
vi xxx.log
第一次进来命令行模式
按i键进入编辑模式
按esc键退回到命令行
shift+:进入尾行模式
输入wq保存
(注意wq!强制保存)

如果不小心编辑错了,不想保存
按q!强制退出不保存

生产文件 xxx.conf

修改生产文件以前一定备份,加日期
xxx_20190123.conf

命令行模式常见快捷键
dd 删除当前行
dG 删除光标(包含光标行)以下的所有行
ndd 删除包含光标的n+1行
gg跳转到第一行的第一个字母
G 跳转到最后一行的第一个字母
shift +$ 尾行最后一个字符
按i 朝右箭头按一下然后回车

生产场景:
有一个内容很多的文件,我想清空
一。先按gg 跳转到第一行的第一个字母
然后dG 删除光标(包含光标行)以下的所有
二。
echo “”> xxx.log(文件名)伪清空(判断shell脚本是否清空根据字节大小来判断)
3.cat /dev/null>ruoze.log2 真正清空

生产场景2
一个文件内容很多,我想要追加写文件
先按G
然后shift +$(一行的最后一个字母)
再按i 朝右箭头按一次再按回车 到新的一行然后开始编辑追加的内容

shift+:进入尾行模式以后 想回去继续编辑 按back

当一个文件内容很多 比如系统的log 我想要快速定位大error关键词
搜索:/+关键词 然后按回车 往下搜 按n 往上搜按N
(尾行模式输入/关键词)

给文件加行号
尾行模式 set nu
取消行号
尾行模式 set nonu

cat 文件名 |grep 关键词 简单判断

将要查看的文件上传到window 用编辑器搜索关键词
vi命令掌握透配置文件都是你的
**在生产修改配置文件一定要备份备份

2权限
看到 Permission denied 就是没有权限的意思

dr-xr-xr-- 2 root root 4096 Jan 20 19:31 1
以d开头的是目录或者是目录
-r-xr-xr-- 1 root root 66 Jan 24 20:15 jepson.log1
以-开头的是文件

r-xr-xr--是权限

r=读=4
w=写=2
x=执行=1
-=0
x一般赋给shell脚本

dr-xr-xr-- 2 root root 4096 Jan 20 19:31 1
drwxr-xr-x 3 root root 4096 Jan 20 10:46 2
drwxr-xr-x 3 root root 4096 Jan 20 10:50 3
dr-xr-xr-- 2 root root 4096 Dec 13 09:36 4
drwxr-xr-x 2 root root 4096 Dec 20 22:46 bin
drwxr-xr-x 2 root root 4096 Jan 20 11:04 jepson.log
-r-xr-xr-- 1 root root 66 Jan 24 20:15 jepson.log1
-rw-r--r-- 1 root root 0 Dec 21 11:00 jepson.log2
-rw-r--r-- 1 root root 44 Jan 20 11:02 jepson.log4
-rw-r--r-- 1 root root 10 Jan 20 17:52 ruoze.log
权限 (未知) 用户 用户组 建立日期 文件名称

第5
除了以-和d开头以外还可以是l开头
l开头的是连接

ln -s 现有文件 软连接文件夹名称

软连接相当于快捷键,快捷键删除原路径下的文件或文件夹不变
eg
[root@hadoop001 ruozedata]# ll
total 36
dr-xr-xr-- 2 root root 4096 Jan 20 19:31 1
drwxr-xr-x 3 root root 4096 Jan 20 10:46 2
drwxr-xr-x 3 root root 4096 Jan 20 10:50 3

dr-xr-xr-- 2 root root 4096 Dec 13 09:36 4

drwxr-xr-x 2 root root 4096 Dec 20 22:46 bin
drwxr-xr-x 2 root root 4096 Jan 20 11:04 jepson.log
-r-xr-xr-- 1 root root 66 Jan 24 20:15 jepson.log1
-rw-r--r-- 1 root root 0 Dec 21 11:00 jepson.log2
-rw-r--r-- 1 root root 44 Jan 20 11:02 jepson.log4
-rw-r--r-- 1 root root 10 Jan 20 17:52 ruoze.log
[root@hadoop001 ruozedata]# ^C
[root@hadoop001 ruozedata]# ln -s 4 44
[root@hadoop001 ruozedata]# ll
total 36
dr-xr-xr-- 2 root root 4096 Jan 20 19:31 1
drwxr-xr-x 3 root root 4096 Jan 20 10:46 2
drwxr-xr-x 3 root root 4096 Jan 20 10:50 3
dr-xr-xr-- 2 root root 4096 Dec 13 09:36 4

lrwxrwxrwx 1 root root 1 Jan 24 20:51 44 -> 4

drwxr-xr-x 2 root root 4096 Dec 20 22:46 bin
drwxr-xr-x 2 root root 4096 Jan 20 11:04 jepson.log
-r-xr-xr-- 1 root root 66 Jan 24 20:15 jepson.log1
-rw-r--r-- 1 root root 0 Dec 21 11:00 jepson.log2
-rw-r--r-- 1 root root 44 Jan 20 11:02 jepson.log4
-rw-r--r-- 1 root root 10 Jan 20 17:52 ruoze.log
[root@hadoop001 ruozedata]#

查看文件的大小
ll -h
du -sh
查看文件夹的大小
du -sh


修改权限命令
chmod 444 文件名称
这样的文件进去以后
显示只读
只读文件编辑后保存用wq!

chmod -R 777 文件夹名(xxx) R相当于递归 把xxx文件夹下的所有文件和文件夹权限都改为777

生产场景
一般软件安装mysql数据库 都有自己的所属用户 mysqladmin 用户组 mysqladmin
su - mysqladmin : 有权限创建 读 写 执行
目录 755

chown -R jepson:jepson 目录xxx 目录xxx下的所有目录的用户和用户组都变成 jepson
eg
[root@hadoop001 ruozedata]# chown -R jepson:jepson 1
[root@hadoop001 ruozedata]# ll
total 36
drwxrwxrwx 2 jepson jepson 4096 Jan 20 19:31 1
drwxrwxrwx 3 root root 4096 Jan 20 10:46 2
drwxrwxrwx 3 root root 4096 Jan 20 10:50 3
drwxrwxrwx 2 root root 4096 Dec 13 09:36 4
lrwxrwxrwx 1 root root 1 Jan 24 20:51 44 -> 4
drwxrwxrwx 2 root root 4096 Dec 20 22:46 bin
drwxrwxrwx 2 root root 4096 Jan 20 11:04 jepson.log
-rwxrwxrwx 1 root root 66 Jan 24 20:15 jepson.log1
-rwxrwxrwx 1 root root 0 Dec 21 11:00 jepson.log2
-rwxrwxrwx 1 root root 44 Jan 20 11:02 jepson.log4
-rwxrwxrwx 1 root root 10 Jan 20 17:52 ruoze.log
[root@hadoop001 ruozedata]# cd 1
[root@hadoop001 1]# ll
total 8
-rwxrwxrwx 1 jepson jepson 10 Jan 20 19:30 jepson.log
-rwxrwxrwx 1 jepson jepson 10 Jan 20 19:31 ruoze.log

linux用户 jepson :读
一般情况下 安装软件的用户都将其执行命令
chmod -R 755 mysqladmin 用户组和其他用户可以读和执行

整套Linux学习过程
-R参数的命令你们就记住这两个 其他都是小r
eg cp -r zip -r复制文件夹

x是执行的权限一般XXX.sh文件需要这个权限 sh文件一般都是shell脚本
shell脚本的开头一定是
#!/bin/bash

执行shell脚本 1. ./XXX.sh 2.sh XXX.sh

3.上传下载
yum install lrzsz 下载下载和上传的软件

rz window ==>linux 上传命令 从window上传到linux
rz命令使用 想把文件下载到那个目录下,就cd切换到那个目录,
然后执行rz命令(直接输入rz),此时就会跳出会话窗口让你选择你要上传的文件

sz linux ==> window 下载命令 从linux下载到window
sz命令的使用 可以cd到要下载的文件所在的目录下然后执行 sz +要下载的文件名
或者 sz +目录所在路径+要下载文件名

在使用xshell时上传和下载命令执行后会出来window窗口供你选择
但是在CRT中下载命令执行以后他会有一个默认路径,
下载完成以后可能不清楚下载到哪了,这时在把会话窗口打开,点击相应的ip右键点击属性,
然后出现一个窗口在窗口的左侧界面选择X/Y/Zmodem,然后窗口的右侧会出现Download的选项,
download就是你下载的路径
**路径修改以后要重新打开一个窗口来下载 要不然不生效

4.系统命令
top 查看机器运载情况
load average: 0.00(一分钟), 0.00(5分钟), 0.00(十分钟)
生产服务器 这三个值最好不要超过10 经验值
超过10的一般需要查看一下
再就是看CPU% 如果占比率很高要根据第一列的pid查看是什么进程 看看是否被挖矿
ps -ef|grep pid

内存
[root@hadoop001 /]# free -m
total used free shared buff/cache available
Mem: 3790 718 184 0 2887 2781
Swap: 0 0 0
[root@hadoop001 /]#
总内存 3790 已使用 718 还剩184
硬盘 df -h

[root@hadoop001 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 4.5G 33G 12% / 根目录总共40G 使用4.5G 还剩33G 使用率12%
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 416K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
tmpfs 380M 0 380M 0% /run/user/0


5.压缩 解压
首先要用亚马云下载解压压缩命令
yum install -y zip unzip
zip unzip
zip -r 6.zip 6/*

zip + 自命名压缩文件名称.zip +要压缩文件名称
unzip 1.zip

[root@hadoop001 ruozedata]# unzip 1.zip
Archive: 1.zip
replace 1/jepson.log? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
extracting: 1/jepson.log
replace 1/ruoze.log? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
extracting: 1/ruoze.log

一般出现以上的这种情况就是说明你要解压的文件姐的名称在现在目录下是存在的 

总结在使用zip和unzip命令时压缩命令可以使用绝对路径  也可以使用相对路径,也可以指定到不同的路径之下

[root@hadoop001 ruozedata]# zip -r /root/ruozedata/2/3.zip /root/ruozedata/2/3
adding: root/ruozedata/2/3/ (stored 0%)
[root@hadoop001 ruozedata]# ll /root/ruozedata/2
total 8
drwxrwxrwx 2 root root 4096 Jan 20 10:46 3
-rw-r--r-- 1 root root 188 Jan 27 10:25 3.zip

[root@hadoop001 ruozedata]# zip -r 3.zip /root/ruozedata/2/3
adding: root/ruozedata/2/3/ (stored 0%)

zip -r 3.zip /root/ruozedata/2/3、

tar -xzvf 解压 tar gz 

tar -czvf 6.tar.gz 6/*    压缩
tar -xzvf 6.tar.gz      解压

z在压缩gz包的时候需要

v相当于可视化

Examples:
tar -cf archive.tar foo bar # Create archive.tar from files foo and bar.
tar -tvf archive.tar # List all files in archive.tar verbosely.
tar -xf archive.tar # Extract all files from archive.tar.

6.wget  下载链接

wget后加下载链接

eg: 

[root@hadoop001 ruozedata]# wget https://www.cnblogs.com/xuziyu/p/10301295.html
--2019-01-27 10:57:55-- https://www.cnblogs.com/xuziyu/p/10301295.html
Resolving www.cnblogs.com (www.cnblogs.com)... 47.111.45.248, 47.96.240.190
Connecting to www.cnblogs.com (www.cnblogs.com)|47.111.45.248|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 21955 (21K) [text/html]
Saving to: ‘10301295.html’

100%[================================================================>] 21,955 --.-K/s in 0.001s

2019-01-27 10:57:55 (17.0 MB/s) - ‘10301295.html’ saved [21955/21955]

看到saved就说明下载成功了,然后ll查看就能看到当前目录下有10301295.html文件

[root@hadoop001 ruozedata]# ll
total 76
drwxr-xr-x 2 root root 4096 Jan 27 10:17 1
-rw-r--r-- 1 root root 21955 Jan 27 10:57 10301295.html
-rw-r--r-- 1 root root 157 Jan 27 10:12 1.tar
-rw-r--r-- 1 root root 157 Jan 27 10:13 1.tar.gz
-rw-r--r-- 1 root root 344 Jan 27 10:16 1.zip
drwxrwxrwx 3 root root 4096 Jan 27 10:25 2
-rw-r--r-- 1 root root 158 Jan 27 10:23 2.zip
-rw-r--r-- 1 root root 188 Jan 27 10:26 3.zip
drwxrwxrwx 2 root root 4096 Dec 13 09:36 4
lrwxrwxrwx 1 root root 1 Jan 24 20:51 44 -> 4
drwxrwxrwx 2 root root 4096 Dec 20 22:46 bin
drwxrwxrwx 2 root root 4096 Jan 20 11:04 jepson.log
-rwxrwxrwx 1 root root 66 Jan 24 20:15 jepson.log1
-rwxrwxrwx 1 root root 0 Dec 21 11:00 jepson.log2
-rwxrwxrwx 1 root root 44 Jan 20 11:02 jepson.log4
-rwxrwxrwx 1 root root 10 Jan 20 17:52 ruoze.log
[root@hadoop001 ruozedata]#

坑: 如果下载的文件的名称是带有空格的,那就注意了  在查看的时候一定要把文件的名称给用双引号引起来,否则查看不了

7.作业调度

[root@hadoop001 ~]# crontab -e  ##编辑  实际上保存目录是/tmp/crontab.hlgial" 
* * * * * /root/ruozedata/test.sh >>root/ruozedata/test.log ##编辑内容

*/2 * * * * /root/ruozedata/test.sh >>root/ruozedata/test.log  这样是每个2分钟

*/10 * * * * /root/ruozedata/test.sh >>root/ruozedata/test.log 这样是每隔10分钟

*代表每的意思

都是星号代表每月每周每日每分钟

第1个*代表: 每分
第2个代表: 每小时
第3个代表: 每日
第4个代表:每 月
第5个代表: 每周

思考:每10秒该怎么办

[root@hadoop001 ruozedata]# vi test1.sh
#!/bin/bash
for((i=1;i<=6;i++));
do
date
sleep 10s
done
exit

###shell脚本写完以后一定不要忘记加执行权限

[root@hadoop001 ruozedata]# crontab -e

* * * * * /root/ruozedata/test1.sh >> /root/ruozedata/test1.log  ##* * * * * /root/ruozedata/test1.sh代表每分钟执行这个shell脚本  这个shell脚本又是每隔10秒脚本离得for循环执行6次,每次间隔10秒,6次执行完以后也就是50秒过去了,再过10秒*****每隔1分钟的那个又开始执行,又开始了for循环 ,周而复始。

[root@hadoop001 ~]# crontab -l ##查看
* * * * * /root/ruozedata/test.sh >>root/ruozedata/test.log
[root@hadoop001 ~]#

###shell脚本的执行  1../+shell命令名称  2.sh  +shell脚本名称  这两种执行都是在当前目录下执行的,在如果不在当前目录下就用绝对路径访问,效果和./shell脚本名称是一致的。

8.后台执行命令 不交互

在shell脚本中注释掉就是在这一行之前加#

在生产上想让shell脚本后台执行

./test.sh &
nohup ./test.sh & 短期的后台运行,因为一直执行产生的内容很多

[root@hadoop001 ruozedata]# nohup ./test.sh &
[11] 15856
[root@hadoop001 ruozedata]# nohup: ignoring input and appending output to ‘nohup.out’

[11] Done nohup ./test.sh
[root@hadoop001 ruozedata]# cat nohup.out
Sun Jan 27 15:18:29 CST 2019
Sun Jan 27 15:18:57 CST 2019


nohup ./test.sh > /root/test.log 2>&1 &

猜你喜欢

转载自www.cnblogs.com/xuziyu/p/10325548.html