指令隨筆

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è)備文件。

含義

  1. > 代表重定向到哪里,例如:echo "123" > /home/123.txt
  2. 1 表示stdout標(biāo)準(zhǔn)輸出,系統(tǒng)默認(rèn)值是1,所以">/dev/null"等同于"1>/dev/null"
  3. 2 表示stderr標(biāo)準(zhǔn)錯(cuò)誤
  4. & 表示等同于的意思,2>&1,表示2的輸出重定向等同于1
  5. 尾部 & 用途:在后臺(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免密登錄

  1. 本地系統(tǒng)執(zhí)行 ssh-keygen -t rsa 命令,生成密鑰文件
  2. 本地機(jī)器執(zhí)行命令如:ssh-copy-id -i ~/.ssh/id_rsa.pub dss@10.164.194.42, 將公鑰文件傳輸?shù)倪h(yuǎn)程機(jī)器,并生效
  3. 遠(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)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 老頑童徐小平,他已經(jīng)60歲了,但是還是那么充滿激情,年輕的心態(tài),喜感的身軀,超喜歡,一起感受他的智慧,學(xué)習(xí)他的風(fēng)采...
    龍少俠linux閱讀 452評(píng)論 0 0
  • 張顯煌,男,服裝設(shè)計(jì)師,1981年12月14日生于江西省撫州市,現(xiàn)擔(dān)任德升集團(tuán)股份有限公司董事長(zhǎng)、上海德升時(shí)裝有限...
    劉紅昌閱讀 2,370評(píng)論 0 0
  • 我過(guò)得混亂,四處嘚瑟的時(shí)候我的朋友都不擔(dān)心我,我一旦開(kāi)始正經(jīng)生活就總有人問(wèn)我怎么了,是不是出了什么事。 新朋友們都...
    葬愛(ài)家族雙刀小蛇王閱讀 271評(píng)論 0 0

友情鏈接更多精彩內(nèi)容