A. linux下運行springboot項目jar包,啟動日誌輸出教程
啟動之後,會在jar所在目錄生成一個nuhup.log日誌文件,記錄控制台的日誌輸出。
備註:主要看符號兩邊: ">" 對應輸出什麼和輸出到哪裡;
輸出分為標准輸出和錯誤輸出,標准輸出就是全輸出,輸出控制台信息;錯誤輸出只是輸出錯誤日誌信息;
因此上面我們執行的 ***.jar >nohup.log 2>&1命令,可以拆解成 > nohup.log 和 2> &1兩個輸出,只看符號「>」左邊輸出部分,分別代表默認標准輸出到一個地方,然後錯誤日誌輸出到另一個地方,咱們後面再講輸出到什麼地方。
輸出到哪,分為輸出到指定路徑日誌文件和重定向位置。
1.指定路徑:如下:> /data/work/log.log 這樣便是指定輸出到路徑/data/work/log.log文件。
Linux上有一個特例路徑/dev/null ,這路徑就好像永久刪除的回收站,當我們不需要輸出任何信息時,就可以將輸出指向/dev/null,那就不會有任何輸出文件。
2.至於重定向,就是將文件重定向到一個地址,如下:
> &1 重定向到標准輸出的地址,啥意思,就是輸出到已指定的標准輸出的地址。
> &2 重定向到錯誤輸出的地址,就是輸出到已指定的錯誤輸出的地址。
比如>nohup.log 2>&1 ,意思是前面默認標准輸出到了nohup.log日誌下,後面錯誤輸出也指向標准輸出的地址,也即nohup.log日誌下。
命令後面加的 & ,可讓命令在後台執行,否則關閉會話會停止程序。
(1)nohup java -jar ***.jar >/data/log.log 2>/data/err.log &
解釋:標准日誌輸出到/data/log.log文件,錯誤日誌輸出到/data/err.log文件。
(2)nohup java -jar ***.jar >/data/log.log 2>&1 &
解釋:標准日誌輸出到/data/log.log文件,錯誤日誌重定向也輸出到/data/log.log文件。
(3)nohup java -jar ***.jar >/dev/null 2>/data/err.log &
解釋:標准日誌輸出到/dev/null,也就是不輸出標准日誌,錯誤日誌輸出到/data/err.log文件。
一般採用上面(3)只輸出錯誤日誌就可以了,有需要的按照(1)進行輸出。
B. 怎麼在LINUX上打開控制台
第一種方法:按「Ctrl+Alt+T」即可打開終端窗口
第二種方法,按「Ctrl+Alt+F1-F6」均可進入終端。
第三種,搜索終端並進入。
注意事項
如果採用了F1-F6的方法,返回圖形界面只要按「Ctrl+Alt+F7即可」
C. 求linux命令 列印文本文件內容到控制台 多個文件可以左右分欄列印, 我記得有這么一個命令,想不起來了
最簡單的你 a.out >> 1.txt
或者用p2,重定向。
你首先要搞清楚控制台上的輸出是怎麼輸出的,比如說是程序裡面printf出來的, 腳本裡面echo出來的等等。
然後做一個寫日誌的函數代碼那個輸出。也可以把標准輸出的文件描述符p到你要寫的文件上面。
最簡單的你 a.out >> 1.txt
或者用p2,重定向。
函數執行,產生的標准輸出,已經再控制台了,我再把它重定向。
你首先要搞清楚控制台上的輸出是怎麼輸出的,比如說是程序裡面printf出來的, 腳本裡面echo出來的等等。
然後做一個寫日誌的函數代碼那個輸出。也可以把標准輸出的文件描述符p到你要寫的文件上面。
execvp(args[0], args) 這個函數運行產生的結果。
使用命令重定向操作符可以使用重定向操作符將命令輸入和輸出數據流從默認位置重定
向到不同的位置。輸入或輸出數據流的位置即為句柄。
下表將列出可用的句柄。
句柄 句柄的數字代號 描述
STDIN 0 鍵盤輸入
STDOUT 1 輸出到命令提示符窗口
STDERR 2 錯誤輸出到命令提示符窗口
UNDEFINED 3-9 這些句柄由應用程序單獨定義,並且是各個工具特定的。
數字 0 到 9 代表前 10 個句柄。可以使用命令 Cmd.exe 運行程序並將該程序前 10 個
句柄中的任何一個重定向。要指定想使用的句柄,可在重定向操作符前面鍵入該句柄的
數字。如果未定義句柄,則默認的 < 重定向輸入操作符是 0,而默認的 > 重定向輸出
操作符是 1。鍵入 > 或 < 操作符之後,必須指定要讀取或寫入數據的位置。可以指定
文件名或另一個現有的句柄。
要指定重定向到現有句柄,請使用與 (&) 字元,後面接要重定向的句柄號
(例如 &句柄#)。例如,下面的命令可以將句柄 2(即 STDERR)重定向到
句柄 1(即 STDOUT):
2>&1
下表列出了可用於將輸入和輸出數據流進行重定向的操作符。
重定向操作符 描述
> 將命令輸出寫入到文件或設備(例如列印機)中,而不是寫在命令提示符窗口或句柄中。
< 從文件中而不是從鍵盤或句柄中讀入命令輸入。
>> 將命令輸出添加到文件末尾而不刪除文件中的信息。
>& 將一個句柄的輸出寫入到另一個句柄的輸入中。
<& 從一個句柄讀取輸入並將其寫入到另一個句柄輸出中。
| 從一個命令中讀取輸出並將其寫入另一個命令的輸入中。也稱作管道。
默認情況下,可以從鍵盤將命令輸入(即 STDIN 句柄)發送到 Cmd.exe,然後由
Cmd.exe 將命令輸出(即 STDOUT 句柄)發送到命令提示符窗口。
重定向輸入 (<)
要將鍵盤輸入重定向到文件或設備,請使用 < 操作符。例如,要從 File.txt 獲取
sort 命令的輸入,請鍵入:
sort<file.txt
File.txt 的內容將以字母順序列表的方式顯示在命令提示符窗口中。
< 操作符可以打開具有隻讀訪問的指定文件名。所以,不能使用該操作符向文件中寫入
信息。例如,如果以 <&2 啟動程序,則所有試圖讀取句柄 0 的操作都將失敗,因為句
柄 2 最初是以只寫訪問打開的。
注意
0 是 < 重定向輸入操作符的默認句柄。
重定向輸出 (>)
幾乎所有的命令都將輸出發送到命令提示符窗口。即使將輸出發送到驅動器或列印機的
命令也會在命令提示符窗口顯示消息和提示。
要將輸出從命令提示符窗口重定向到文件或設備,請使用 > 操作符。可以在許多命令中
使用該操作符。例如,要將 dir 輸出重定向到 Dirlist.txt,請鍵入:
dir>dirlist.txt
如果 Dirlist.txt 不存在,Cmd.exe 將創建該文件。如果 Dirlist.txt 存在,Cmd.exe
將使用 dir 命令的輸出替換文件中的信息。
要運行 netsh routing mp 命令,然後將輸出發送到 Route.cfg,請鍵入:
netsh routing mp>c:\route.cfg
> 操作符可以打開具有隻寫訪問屬性的指定文件。所以,不能使用該操作符讀取文件。
例如,如果使用重定向 >&0 啟動程序,則所有試圖寫入句柄 1 的操作都將失敗,因為
句柄 0 最初是以只讀訪問打開的。
注意
1 是 > 重定向輸出操作符的默認句柄。
復制句柄
重定向操作符 & 可以將輸出或輸入從一個指定句柄復制到另一個指定的句柄。例如,
要將 dir 輸出發送到 File.txt 並將錯誤輸出發送到 File.txt,請鍵入:
dir>c:\file.txt 2>&1
復制句柄時,可以復制該句柄原狀態的所有特性。例如,如果一個句柄具有隻寫訪問的
屬性,則該句柄的所有副本都具有隻寫訪問屬性。不能將一個具有隻讀訪問屬性的句柄
復制到另一個具有隻寫訪問屬性的句柄。
使用 & 操作符重定向輸入和副本
要將重定向輸入操作符 (<) 與復制操作符 (&) 一起使用,指定的文件必須已經存在。
如果輸入文件存在,Cmd.exe 將以只讀方式打開該文件,然後將文件中包含的字元作為
輸入發送到此命令(如同從鍵盤輸入一樣)。如果指定了句柄,Cmd.exe 將指定的句柄
復制到系統現有的句柄中。
例如,要以句柄 0 輸入讀取(即 STDIN)的方式打開 File.txt,請鍵入:
<file.txt
要打開 File.txt,並在內容排序後將輸出發送到命令提示符窗口(即 STDOUT),請鍵入:
sort<file.txt
要查找 File.txt,然後將句柄 1(即 STDOUT)和句柄 2(即 STDERR)重定向到
Search.txt,請鍵入:
findfile file.txt>search.txt 2<&1
要以句柄 0 輸入讀取(即 STDIN)的方式復制用戶定義句柄 3,請鍵入:
<&3
使用 & 操作符重定向輸出和復制
如果將輸出重定向到文件且指定了現有的文件名,Cmd.exe 將以只寫方式打開文件並覆
蓋該文件內容。如果指定了句柄,Cmd.exe 將文件復制到現有句柄中。
要將用戶定義句柄 3 復制到句柄 1,請鍵入:
>&3
要將包括句柄 2(即 STDERR)的所有輸出從 ipconfig 命令重定向到
句柄 1(即 STDOUT),然後將輸出重定向到 Output.log,請鍵入:
ipconfig.exe>>output.log 2>&1
使用 >> 重定向操作符追加輸出
要從命令中將輸出添加到文件末尾而不丟失文件中已存在的任何信息,請使用兩個連續
的大於號(即 >>)。例如,下面的命令可以將由 dir 命令生成的目錄列表追加到
Dirlist.txt 文件:
dir>>dirlist.txt
要將 netstat 命令的輸出追加到 Tcpinfo.txt 的末尾,請鍵入:
netstat>>tcpinfo.txt
使用管道操作符 (|)
管道操作符 (|) 可以提取一個命令的輸出(默認情況下是 STDOUT),然後將其導入另
一個命令的輸入中(默認情況下是 STDIN)。例如,下面的命令將對目錄分類:
dir | sort
在本例中,將同時啟動兩個命令,但隨後 sort 命令會暫停,直到它接收到 dir 命令
的輸出為止。sort 命令使用 dir 命令的輸出作為輸入,然後將輸出發送到
句柄 1(即 STDOUT)。
合並帶重定向操作符的命令
可以通過合並帶有其他命令和文件名的篩選器命令創建自定義命令。例如,可以使用以
下命令存儲包含「LOG」字元串的文件名:
dir /b | find "LOG" > loglist.txt
dir 命令的輸出通過 find 篩選器命令發送。包含字元串 "LOG" 的文件名作為文件名
列表(例如,NetshConfig.log、Logdat.svd 和 Mylog.bat)存儲在文件
Loglist.txt 中。
要在相同命令中使用多個篩選器,請使用管道 (|) 分隔篩選器。例如,下面的命令將
搜索 C 盤上的每個目錄以查找包含 "LOG" 字元串的文件名,並且在命令提示符窗口中
每次顯示一屏:
dir c:\ /s /b | find "LOG" | more
利用管道 (|) 可以將 Cmd.exe 導向為通過 find 篩選器命令發送 dir 命令輸出。
find 命令只選擇包含字元串 "LOG" 的文件名。more 命令可以顯示由 find 命令選擇
的文件名(在命令提示符窗口中每次顯示一屏)。有關篩選器命令的詳細信息,請參閱
使用篩選器。
D. linux 控制台列印
應該說這是不可以的,因為系統內核有最高許可權一部分內核信息需要輸出到控制台,別人無法阻止它
如果你說的控制台是專指某種設備比如直接連接在主機上的顯示器的話就是另外一回事了,他只是一個普通的輸出設備tty, 我們可以把系統配製成在啟動的時候選擇其他設備(一般是串口)作為控制台,這樣的情況下顯示器就不是系統控制台了,你可以對它設置許可權只允許某個賬戶進行讀寫,只顯示你想要輸出的內容,倒不是因為系統被屏蔽了無法輸出而是因為他不是控制台系統根本不會試圖輸出任何東西過來
E. Linux 高級命令
echo "HelloWorld"
向控制台輸出HelloWorld信息
Linux允許將命令執行結果重定向到一個文件,本應顯示在終端上的內容保存到指定文件中。
ls > test.txt
test.txt 如果不存在,則創建,存在則覆蓋其內容
注意: > 輸出重定向會覆蓋原來的內容, >> 輸出重定向則會追加到文件的尾部
cat xxx.py 可以用來快速查看某個文件內容,輸出到控制台
cat test.txt >> haha.txt 將test.txt的內容追加到haha.txt中
cat 1.txt 2.txt > 1_2.txt 將1.txt 2.txt內容合並到1_2.txt中
分屏顯示:more
查看內容時,在信息過長無法在一屏上顯示時,會出現快速滾屏,使得用戶無法看清文件的內容,此時可以使用more命令,從頭開始,每次只顯示一頁,空格鍵顯示下一頁,b鍵上一頁,按下q鍵退出顯示,按下h鍵可以獲取幫助。
more xxx.py
管道:一個命令的輸出可以通過管道做為另一個命令的輸入。
管道我們可以理解現實生活中的管子,管子的一頭塞東西進去,另一頭取出來,這里「 | 」的左右分為兩端,左端塞東西(寫),右端取東西(讀)。即管道左邊的輸出結果作為管道右側的參數
cat info.txt | more
tree | more
::: warning
more管道符讀到的內容只能前進,不能後退;只能使用空格或回車向下看,不能使用b回看
:::
Linux鏈接文件類似於Windows下的快捷方式。
鏈接文件分為軟鏈接和硬鏈接。
ln -s 源文件 鏈接文件
ln 源文件 鏈接文件
沒有-s 選項代表建立一個硬鏈接文件,兩個文件佔用相同大小的硬碟空間,即使刪除了源文件,鏈接文件還是存在,一般用於保護系統重要的文件。所以-s選項是更常見的形式。
::: warning 注意
如果軟鏈接文件和源文件不在同一個目錄,源文件要使用絕對路徑,不能使用相對路徑。
:::
find命令功能非常強大,通常用來在特定的目錄下搜索符合條件的文件,也可以用來搜索特定用戶屬主的文件。
常用用法:
Linux系統中grep命令是一種強大的文本搜索工具,grep允許對文本文件進行模式查找。如果找到匹配模式, grep列印包含模式的所有行。
grep一般格式為:
在grep命令中輸入字元串參數時,最好用引號或雙引號括起來。
例如:
從某個文件搜索
搜索當前目錄所有文件
常用選項說明:**
grep搜索內容串可以是正則表達式。
正則表達式是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。
grep常用正則表達式:
計算機中的數據經常需要備份,tar是Unix/Linux中最常用的備份工具,此命令可以把一系列文件歸檔到一個大文件中,也可以把檔案文件解開以恢復數據。
tar使用格式:
tar [參數] 打包文件名 文件
tar命令很特殊,其參數前面可以使用「-」,也可以不使用。
常用參數:
注意:除了f需要放在參數的最後,其它參數的順序任意。
常用命令:
tar與gzip命令結合使用實現文件打包、壓縮。 tar只負責打包文件,但不壓縮,用gzip壓縮tar打包後的文件,其擴展名一般用xxxx.tar.gz。也會見到縮寫的.tgz這種擴展名。
gzip使用格式如下:
常用選項:
tar這個命令並沒有壓縮的功能,它只是一個打包的命令,但是在tar命令中增加一個選項 -z 可以調用gzip實現壓縮的功能,最終實行一個先打包後壓縮的過程。
-z :指定壓縮包的格式為 xxx.tar.gz
tar壓縮: tar zcvf xxx.tar.gz 文件1 文件2 ...
tar解壓: tar zxvf xxx.tar.gz
解壓到指定目錄: tar zxvf xxx.tar.gz -C target_dir/ (大寫字母「C」)
tar與bzip2命令結合使用實現文件打包、壓縮(用法和gzip一樣)。
tar只負責打包文件,但不壓縮,用bzip2壓縮tar打包後的文件,其擴展名一般用xxxx.tar.bz2。
在tar命令中增加一個選項(-j)可以調用bzip2實現了一個壓縮的功能,實行一個先打包後壓縮的過程。
壓縮用法 : tar -jcvf 壓縮包包名 文件1 文件2... (例: tar jcvf bak.tar.bz2 *.c )
解壓用法 : tar -jxvf 壓縮包包名 (例: tar jxvf bak.tar.bz2 )
通過zip壓縮文件的目標文件不需要指定擴展名,默認擴展名為zip。
壓縮文件 :zip [-r] 目標文件(沒有擴展名) 源文件
解壓文件 :unzip -d 解壓後目錄文件 壓縮文件
使用tree命令可以查看指定目錄的樹狀結構
有時我們想知道被執行的命令在哪個目錄,以方便切換或更新不同版本,如Python。可以使用 which 命令
文件內容為:123 aaa bbb哈
執行 echo "123 aaa bbb哈" > xxx.txt
wc -l xxx.txt 文件內容的行數1
wc -w xxx.txt 文件內容的單詞數3
wc -c xxx.txt 文件內容的位元組數15
wc xxx.txt 文件內容的行數,單詞數,位元組數1 3 15
wc -m xxx.txt 文件的字元數13
sed 是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用。一般用於自動編輯轉換程序,動態調整文件內容。
sed 's/good/GOODS/' file 替換每行第一個指定字元串(輸出所有行)
sed -n 's/good/GOODS/p' file 替換每行第一個指定字元串(只輸出替換的行)
sed -i 's/good/GOODS/g' file 替換所有指定字元串,並應用到文件
sed ƈd' file 刪除第二行
sed '/^test/d' 刪除good開頭的行
sed -n Ɖp' file 列印第3行
顯示當前時間 # Tue May 7 14:35:31 DST 2019
當前日期和時間 # 20190507-14:34:25
使用history命令可以查看之前輸過的命令及其id,
使用 !id 的形式,可以快速執行指定歷史命令
Linux命令大全: http://man.linuxde.net/
菜鳥Linux命令: https://www.runoob.com/linux/linux-command-manual.html