linux
修改shell腳本的編碼
在window下編寫(xiě)的shell腳本編碼為dos,在linux環(huán)境下不能直接使用
:set ff #查看當(dāng)前文本的模式類(lèi)型,一般為dos,unix
:set ff=dos #設(shè)置為dos模式
:set ff=unix#設(shè)置為unix模式
>/dev/null 2>&1 & 指令解釋
> /dev/null : 首先表示標(biāo)準(zhǔn)輸出重定向到空設(shè)備文件,也就是不輸出任何信息到終端,說(shuō)白了就是不顯示任何信息。
2>&1 :接著,標(biāo)準(zhǔn)錯(cuò)誤輸出重定向(等同于)標(biāo)準(zhǔn)輸出,因?yàn)橹皹?biāo)準(zhǔn)輸出已經(jīng)重定向到了空設(shè)備文件,所以標(biāo)準(zhǔn)錯(cuò)誤輸出也重定向到空設(shè)備文件。含義
- > 代表重定向到哪里,例如:echo "123" > /home/123.txt
- 1 表示stdout標(biāo)準(zhǔn)輸出,系統(tǒng)默認(rèn)值是1,所以">/dev/null"等同于"1>/dev/null"
- 2 表示stderr標(biāo)準(zhǔn)錯(cuò)誤
- & 表示等同于的意思,2>&1,表示2的輸出重定向等同于1
- 尾部 & 用途:在后臺(tái)運(yùn)行,當(dāng)關(guān)閉了ssh終端,程序也會(huì)關(guān)閉
nohup用途:不掛斷地運(yùn)行命令,即使終端ssh關(guān)閉了也一直運(yùn)行。
windows與linux的路徑分隔符
在Windows中我們拼接路徑時(shí)是使用反斜杠的,而在java程序中需要使用雙反斜杠,因?yàn)榈谝粋€(gè)反斜杠會(huì)被當(dāng)作轉(zhuǎn)義字符,如下圖所示:windows
但是類(lèi)似的程序放在Linux中就會(huì)報(bào)錯(cuò),因?yàn)長(zhǎng)inux中文件路徑分隔符并不是反斜杠,而是正斜杠,如下圖所示:linux
運(yùn)行jar包中指定的 main
運(yùn)行指定的 main 方法:
java -cp XXXX.jar com.smbea.dubbo.bin.Console start
消費(fèi)KAFKA topic中的消息
查看topology任務(wù)的結(jié)果
./bin/kafka-console-consumer.sh --bootstrap-server 10.11.6.52:9092 --topic WC_result --from-beginning
linux批量殺死進(jìn)程
ps -ef |grep ConsoleConsumer|awk '{print $2}'|xargs kill -9 //這個(gè)會(huì)有多余的進(jìn)程
ps -ef | grep TaskManagerRunner | grep -v grep | awk '{print $2}' | xargs kill -9 //這個(gè)在本機(jī)器上可以正常kill多個(gè)相同進(jìn)程,但是kill別的機(jī)器上的進(jìn)程會(huì)導(dǎo)致所有無(wú)關(guān)的進(jìn)程也被殺。慎用?。。?!
//一個(gè)機(jī)器殺死多個(gè)機(jī)器上的多個(gè)進(jìn)程:比如我殺死2個(gè)TaskManagerRunner
ssh 10.11.6.52 "kill -9 `ssh 10.11.6.52 ps -ef | grep TaskManagerRunner | grep -v grep | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
ssh 10.11.6.52 "kill -9 `ssh 10.11.6.52 ps -ef | grep TaskManagerRunner | grep -v grep | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
//運(yùn)行兩次
ps -ef查詢當(dāng)前用戶下所有進(jìn)程grep ConsoleConsumer匹配出ConsoleConsumer的進(jìn)程grep -v grep排除grep ConsoleConsumer的進(jìn)程 (可選)awk '{print $2}'獲取進(jìn)程號(hào)xargs kill -9執(zhí)行kill -9的操作
一些啟動(dòng)指令
./apache-storm-1.2.1/bin/storm logviewer > /dev/null 2>&1 & #storm的logviewer后臺(tái)啟動(dòng)
nohup ./kafka-manager-1.3.3.17/bin/kafka-manager & #kafka-manager后臺(tái)啟動(dòng)
./kafka-server-start.sh ../config/server.properties 1>/dev/null 2>&1 & #kafka后臺(tái)啟動(dòng)
SSH免密登錄
- 本地系統(tǒng)執(zhí)行 ssh-keygen -t rsa 命令,生成密鑰文件
- 本地機(jī)器執(zhí)行命令如:ssh-copy-id -i ~/.ssh/id_rsa.pub dss@10.164.194.42, 將公鑰文件傳輸?shù)倪h(yuǎn)程機(jī)器,并生效
- 遠(yuǎn)程機(jī)器的.ssh目錄需要700權(quán)限,authorized_keys文件需要600權(quán)限
chmod 600 authorized_keys
遇到這樣操作還是失效,需要輸入密碼登錄,先檢查authorized_keys寫(xiě)入了沒(méi),權(quán)限等。失效節(jié)點(diǎn)的文件權(quán)限檢查
正常節(jié)點(diǎn)的文件權(quán)限檢查
修改".."對(duì)應(yīng)的文件夾為700,然后成功免密登錄,不知道什么原因......
僵尸進(jìn)程
查看:
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
命令注解:
-A 參數(shù)列出所有進(jìn)程
-o 自定義輸出字段 我們?cè)O(shè)定顯示字段為 stat(狀態(tài)), ppid(進(jìn)程父id), pid(進(jìn)程id),cmd(命令)這四個(gè)參數(shù)
殺死:
先kill -9 ppid
再kill -9 pid
移動(dòng)文件夾
命令格式:mv [-fiv] source destination
例如:
如將/test1目錄下的file1復(fù)制到/test3 目錄,并將文件名改為file2,可輸入以下命令:
mv /test1/file1 /test3/file2
路徑和目錄
./ 同級(jí)目錄
../ 上級(jí)目錄,父級(jí)目錄
~/ /home/user
pwd 顯示當(dāng)前路徑
hadoop
hdfs
- 創(chuàng)建目錄
hdfs dfs -mkdir /demo1 - 上傳到hdfs
hdfs dfs -put /home/hadoop/core-site.xml /demo1 - 下載到本地
hdfs dfs -get /demo1/core-site.xml /home - 刪除文件
hdfs dfs -rm -r -skipTrash /flink-checkpoints/*
yum任何指令無(wú)響應(yīng)
rm /var/lib/rpm/.dbenv.lock
用戶環(huán)境變量
.bashrc和.bash_profile是用來(lái)定義用戶環(huán)境變量。而且.bash_profile里還會(huì)調(diào)用bashrc。
全局linux有一個(gè)JDK1.7,我想修改自己的JDK1.8。直接在.bashrc里面添加
export JAVA_HOME=/home/wxt/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${JAVA_PATH}:$PATH
特別注意export PATH=${JAVA_PATH}:$PATH 。$PATH要放在最后面,不然JAVA_PATH會(huì)被前面全局的覆蓋。順序是前面的變量覆蓋后面的變量。
手動(dòng)清理內(nèi)存
1.sudo sync //把緩存的寫(xiě)入磁盤(pán)
2.sudo sh -c "echo 3 > /proc/sys/vm/drop_caches" //清空所有緩存
3.sudo sh -c "echo 0 > /proc/sys/vm/drop_caches" //重新分配回0,不釋放的默認(rèn)狀態(tài)



