Linux專案實踐中常用操作彙總

人生路且修且行發表於2020-11-11

Linux

1、linux檢視時間,可寫入指令碼中

date
date -d 0day +%Y%m%d

顯示前1小時的時間
	date +%Y%m%d%H -d '-1 hours'
	
顯示前1天的時間
date +%Y%m%d -d '-1 days'
daySelect=`date +%Y%m%d -d '-1 days'`

如果是shell指令碼需要使用時間的話,使用時記得加單引號,否則會有換行符,無法使用。

2、linux檢視日誌/檔案內容

less 檔案/日誌名

shift + G 跳至最後一行便於檢視日誌執行時間

3、linux指令碼定時

簡單定時-sleep

在shell指令碼里定時執行一段命令,比如每隔5秒執行一次.

#! /bin/sh
while((1))
do
echo "hello world!"
sleep 5
done

4、linux指令碼定時排程

大牛連結:
	https://blog.csdn.net/xionglangs/article/details/52913351
執行指令碼helloworld.sh:
	#!/bin/bash
	#該指令碼主要做指令碼排程測試
	echo "hello-World!"
	echo "hello-World-2!"
	echo "hello-World-3!"
	
寫法步驟:
	crontab -e 進入vi編輯,表示每小時的31,32,33都執行helloworld.sh指令碼,並輸出到日誌中。
	
	31,32,33 * * * * sh /root/helloworld.sh >> /root/helloworld.log 2>&1 &
引數說明:
	crontab -u //設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數
	crontab -l //列出某個使用者cron服務的詳細內容
	crontab -r //刪除某個使用者的cron服務
	crontab -e //編輯某個使用者的cron服務
	
基本格式:
*  *  *  *  *  command
分  時  日  月  周 	 命令

6個欄位組成,不同欄位間用空格或 tab 鍵分隔
第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要執行的命令


例項:
  #每兩個小時
  0 */2 * * * date (solaris 5.8似乎不支援此種寫法)

  #晚上11點到早上8點之間每兩個小時,早上8點
  0 23-7/2,8 * * * date

  #每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點
  0 11 4 * mon-wed date

  #1月份日早上4點
  0 4 1 jan * date
  
  #每晚的21:30
  30 21 * * * 

  #每月1、10、22日的4 : 45重啟lighttpd
  45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

  #每週六、週日的1 : 10重啟lighttpd
  10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

  #每天18 : 00至23 : 00之間每隔30分鐘重啟lighttpd
  0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

  #每星期六的11 : 00 pm重啟lighttpd
  0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

  #每一小時重啟lighttpd
  * */1 * * * /usr/local/etc/rc.d/lighttpd restart

  #晚上11點到早上7點之間,每隔一小時重啟lighttpd
  * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

5、linux-loz解壓

lzop -d xxx.lzo

hadoop fs -text < hdsf file>
將文字檔案或某些格式的非文字檔案通過文字格式輸出

6、linux檢視/停止Spark–yarn現存任務

檢視當前yarn所有列表,最左側是程式編號,格式類似於,application_1880123456789_12345
yarn application -list

yarn application -kill application_1880123456789_12345

7、linux檢視具體行數檔案

檢視/etc/profile的前10行內容,應該是:
# head -n 10 /etc/profile (>>/home/test)
檢視/etc/profile的最後5行內容,應該是:
# tail -n 5 /etc/profile (>>/home/test)


1、從第3000行開始,顯示1000行。即顯示3000~3999行
cat filename | tail -n +3000 | head -n 1000
 
2、顯示1000行到3000行
cat filename | head -n 3000 | tail -n +1000

分解:
    tail -n 1000:顯示最後1000行
    tail -n +1000:從1000行開始顯示,顯示1000行以後的
    head -n 1000:顯示前面1000行
 
3、用sed命令
 sed -n '5,10p' filename 這樣你就可以只檢視檔案的第5行到第10行。

8、linux常見vi檔案操作

https://www.cnblogs.com/LiuQizhong/p/11796824.html

9、linux-指令碼小知識彙總

1)\r’: 未找到命令警告

如果是在win環境下編輯的,後來ftp到unix伺服器上,那麼有可能出現Error:Unable to access jarfile找不到指令碼中的jar包,單獨跑次命令又沒得問題,那麼你可能需要將由win指令碼轉linux。

原因分析:在windows下編寫的shell指令碼,上傳到伺服器,存在多餘的空格或換行,導致報錯
解決辦法,安裝dos2unix

安裝dos2unix 
yum install dos2unix

使用dos2unix對指令碼轉換 
dos2unix xxx.sh

2)去除hive -e匯出檔案的WANG內容行

cat /root/data/hive/zhu.txt | grep -v "WARN"  >> /root/data/hive/zhu_ruu.txt

3)檔案重複寫入問題

若指令碼執行一次後形成檔案a.txt,第二次依舊形成a.txt,那麼此時的a.txt檔案資料是2次之和。
所以在下一次指令碼執行前需要刪除a.txt檔案

eg:
`rm -r /root/data/hive/zhu.txt`
`rm -r /root/data/hive/zhu_ruu.txt`
hive -e ";" | tr "\t" "," >> /root/data/hive/zhu.txt
cat /root/data/hive/zhu.txt | grep -v "WARN"  >> /root/data/hive/zhu_ruu.txt

10、linux檢視HDFS檔案的大小

 hadoop fs -du -h /xxxx

11、linux檢視本地目錄大小

du -sh xx/* 也會列出當前資料夾下所有檔案對應的大小

du -h --max-depth=1

相關文章