1. 程式人生 > >大數據學習之Linux(3)

大數據學習之Linux(3)

安裝軟件 17. nta 輸入 shell腳本 rbo use 常見 判斷

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 &

https://blog.csdn.net/weixin_42330251/article/details/86531434

大數據學習之Linux(3)