1. 程式人生 > 其它 >【轉】linux那些事兒

【轉】linux那些事兒

Linux只是一個作業系統核心而已,而GNU提供了大量的自由軟體來豐富在其之上的各種應用程式。我們常說的linux實際是GNU/Linux,GNU是一個自由的作業系統。
絕大多數基於Linux核心的作業系統使用了大量的GNU軟體,包括了一個shell程式、工具、程式庫、編譯器及工具,還有許多其他程式,例如Emacs。

一、參考學習

https://www.runoob.com/linux/linux-command-manual.html

https://man.linuxde.net/

二、常用變數

1、特殊位置引數變數

$* 
取當前shell的所有引數,將所有的命令列視為單個字串,相當於'$1$2'
$@ 取當前shell的所有引數,
保留引數裡的空白。

三、常用命令

1、檢視 Kernel、GCC 以及 RedHat 版本資訊

cat /proc/version
Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017

uname -a
Linux localhost.localdomain.com 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
uname -r 3.10.0-693.el7.x86_64 more /etc/system-release CentOS Linux release 7.4.1708 (Core) more /etc/redhat-release CentOS Linux release 7.4.1708 (Core) more /etc/centos-release CentOS Linux release 7.4.1708 (Core)

2、檢視作業系統的位數

getconf LONG_BIT
64

getconf WORD_BIT
64

file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64
, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped

3、檢視 CPU 個數、核心數和執行緒數

# 檢視 CPU 的物理個數
grep 'physical id' /proc/cpuinfo | sort -u | wc -l
1

# 檢視 CPU 的核心數量
grep 'core id' /proc/cpuinfo | sort -u | wc -l
2

# 檢視 CPU 的執行緒數量
grep 'processor' /proc/cpuinfo | sort -u | wc -l
4

# 檢視 CPU 的型號
dmidecode -s processor-version
Intel(R) Core(TM) i3-4170 CPU @ 3.70GHz

# 檢視 記憶體 方法
grep MemTotal /proc/meminfo
MemTotal: 3750308 kB

4、知道22埠被哪個程序佔用

lsof -i :22 
netstat -lnp|grep 7000 

5、顯示http response頭資訊

curl -I http://127.0.0.1:8182/webhook/comment

6、把檔案內容輸出到本地,並保留檔名,可以理解為直接把檔案下載到本地。

curl -O http://127.0.0.1:7780/object/test02

7、操作資料夾

mkdir folderName
建立資料夾

rm -r folderName
刪除資料夾

rm -rf folderName
強制刪除資料夾

mv sfolderName dfolderName
重新命名資料夾

8、操作檔案

touch filename 比如touch index.js
建立一個空的js檔案。

find path -name filename 比如find components -name "*.js"
查詢指定型別的檔案。

ls
檢視有哪些檔案

ll
檢視檔案的詳細資訊

head -n filename
檢視一個檔案的前n行,如果不指定n,則預設顯示前n行。
tail
-f storage/logs/xf-web-2015-11-30.log 檢視文件內容,預設顯示最後10行,比如檢視伺服器檔案日誌 vim /root/.pm2/logs/monitorApp-out.log 文字檢視和編輯 cat /root/.pm2/logs/monitorApp-out.log 文字檢視 cp oldfile newfile 複製檔案 cp -r old/ new/ 不是把old目錄裡面的檔案拷貝到new目錄,而是把old直接拷貝到new下面。 cp -r ../teamb/xf-web . 不是把old目錄裡面的檔案拷貝到new目錄,而是把old直接拷貝到new下面。 :q git log之後要退出(不儲存),並回到命令列。 :q!  強制退出,放棄修改。 :wq 儲存檔案後退出。 :wq! 強制儲存退出。

9、vim模式

i
進入編輯模式

/
查詢關鍵字

:
跳到某行

esc
退出編輯模式

pwd
檢視當前路徑

>
表示覆蓋原檔案內容(檔案的日期也會自動更新)

>>
表示追加內容(會另起一行,檔案的日期也會自動更新)

cat /etc/hosts > hosts.log
執行命令cat /etc/hosts,將其返回結果儲存到hosts.log中。

& 
表示任務在後臺執行,如要在後臺執行redis-server,則有 redis-server &

&& 
表示前一條命令執行成功時,才執行後一條命令,如echo '1‘ && echo '2' 

| 
表示管道,上一條命令的輸出,作為下一條命令引數,如 echo 'yes' | wc -l

|| 
表示上一條命令執行失敗後,才執行下一條命令,如 cat nofile || echo "fail"

.
指當前目錄

./
可以用來執行當前目錄下的可執行檔案

10、其他操作

telnet 127.0.0.1 11211
telnet連線

flush_all
清空所有鍵值,flush並不會將items刪除,只是將所有的items標記為expired,因此這時memcache依舊佔用所有記憶體。

11、make命令

https://www.cnblogs.com/worldleader131/p/make-command-project.html

12、export命令

https://www.runoob.com/linux/linux-comm-export.html 

# 列出環境變數
export -p

# 定義環境變數,列出分支,查詢當前分支,匹配至少有一個.的
export branch=`git branch | grep \* | grep -Eo ' .+'` 
# 使用環境變數 $$branch

13、xargs命令

https://www.runoob.com/linux/linux-comm-xargs.html

14、grep命令

查詢字串。

git log develop.. --pretty=format:%B | grep -vE '^\s*$$' | cat

https://www.runoob.com/linux/linux-comm-grep.html

15、echo命令

echo -e "\033[字背景顏色;字型顏色m字串\033[0m" 
echo -e "\e[1;31mThis is red text\e[0m"

  \e[1;31m 將顏色設定為紅色
  \e[0m 將顏色重新置回

背景顏色碼:重置=0,黑色=40,紅色=41,綠色=42,黃色=43,藍色=44,洋紅=45,青色=46,白色=47

文字顏色碼:重置=0,黑色=30,紅色=31,綠色=32,黃色=33,藍色=34,洋紅=35,青色=36,白色=37

四、正則表示式

假設當前專案分支為feature/A:

grep \**進行轉義,查詢存在*的分支,輸出* feature/A

grep -Eo ' .+'
啟用正則,並按該規則去查詢,輸出feature/A

grep -vE '^\s*$$' test.log 或者 grep -vE '^$' test.log 或者  grep -vE '^\s$' test.log
查詢沒有空格,空行的行。反向匹配,過濾掉空行,空格。比如輸出feat: 這是一個提交。

五、安裝node
1、建立一個資料夾命名node

wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz
tar xvf node-v12.13.0-linux-x64.tar.xz
cd /node/node-v12.13.0-linux-x64/bin

2、建立軟連結,以便全域性使用

ln -s /node/node-v12.13.0-linux-x64/bin/npm /usr/bin/npm
ln -s /node/node-v12.13.0-linux-x64/bin/node /usr/bin/node
node -v
npm -v

3、如果無法建立,先在/usr/bin/目錄下刪除已存在的

rm -rf node
rm -rf npm

六、問題與方案

1、不識別pm2

pm2: command not found

建立linux下的軟連線,在linux上的設定軟連線相當於windows下的配製環境變數

ln -s /node/node-v12.13.0-linux-x64/bin/pm2 /usr/bin/pm2