Shell 教程
linux只用于運(yùn)行和查看猎莲,具體的數(shù)據(jù)查找和處理通過shell腳本程序進(jìn)行。不會(huì)直接使用linux處理數(shù)據(jù)单雾。可以定義shell腳本是linux命令的結(jié)合
一坚冀、定義(簡略看)
Shell 是一個(gè)用 C 語言編寫的程序谆刨,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言纹坐,又是一種程序設(shè)計(jì)語言枝冀。
Shell 是指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面耘子,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)果漾。
Shell 腳本
Shell 腳本(shell script),是一種為 shell 編寫的腳本程序谷誓。
業(yè)界所說的 shell 通常都是指 shell 腳本绒障,但shell 和 shell script 是兩個(gè)不同的概念。
二捍歪、shell環(huán)境(簡略看)
Shell 編程跟 JavaScript户辱、php 編程一樣鸵钝,只要有一個(gè)能編寫代碼的文本編輯器和一個(gè)能解釋執(zhí)行的腳本解釋器就可以了。
Linux 的 Shell 種類眾多焕妙,常見的有:
Bourne Shell(/usr/bin/sh或/bin/sh)
Bourne Again Shell(/bin/bash)
C Shell(/usr/bin/csh)
K Shell(/usr/bin/ksh)
Shell for Root(/sbin/sh)
三蒋伦、基本操作
1、創(chuàng)建一個(gè)打印一行文字的shell腳本
- 創(chuàng)建一個(gè)frog文件
touch frog.sh
vi frog.sh
- 按i編輯內(nèi)容
#!/bin/sh
a='hellow world'
echo $a
(第一行指定了解釋器
第三行打臃偃怠)
- Esc+shift+zz退出痕届。
- 運(yùn)行腳本
sh frog.sh
2、啟動(dòng)hive
編輯frog.sh文件末患,dd清除相關(guān)內(nèi)容研叫,保留第一行指定編輯器。
#!/bin/sh
hive
退出并運(yùn)行
sh frog.sh
3璧针、查看hive數(shù)據(jù)庫
編輯frog.sh文件嚷炉,dd清除相關(guān)內(nèi)容,保留第一行指定編輯器探橱。
#!/bin/sh
hive -v -e"
show databases;
";
第三行為hive中的sql語句申屹,展示數(shù)據(jù)庫文件。
這樣就可以不進(jìn)入hive數(shù)據(jù)庫直接運(yùn)行.sh文件運(yùn)行sql語句了隧膏,批量執(zhí)行省時(shí)省力,實(shí)現(xiàn)數(shù)據(jù)庫定時(shí)更新哗讥。
4、定向保存腳本結(jié)果
強(qiáng)制清除當(dāng)前路徑下的文件
rm -rf *
創(chuàng)建.sh文件
vi runshell.sh
#!/bin/sh
hive -v -e"
show databases;
";
運(yùn)行的結(jié)果定向保存到日志文件
sh runshell.sh > runshell.log
查看.log文件
cat runshell.log
5胞枕、斷連結(jié)果保存
腳本程序中所對應(yīng)的hive數(shù)據(jù)庫如果數(shù)據(jù)量特別大的情況下杆煞,有可能斷開連接。
nohup sh runshell.sh >runshell.log 2>&1 &
"2>&1 &"標(biāo)準(zhǔn)錯(cuò)誤輸出保存到runshell.log中
- 運(yùn)行
jobs
查看進(jìn)程號
jobs -l
查看日志:
cat *.log