linux動態
Ⅰ 下面哪個是linux動態查看最新100行日誌的方式
對於從事web開發的人員來說.伺服器上的日誌多如牛毛,如何快速從中找出所需信息非常重要,以下是我在工作中用到的查找日誌的簡單命令,希望能對您有所幫助:
...展開
工具原料
linuxSecureCRT
方法/步驟分步閱讀
1
/7
先必須了解兩個最基本的命令:
tail -n 10 test.log 查詢日誌尾部最後10行的日誌;
tail -n +10 test.log 查詢10行之後的所有日誌;
head -n 10 test.log 查詢日誌文件中的頭10行日誌;
head -n -10 test.log 查詢日誌文件除了最後10行的其他所有日誌;
2
/7
場景1: 按行號查看---過濾出關鍵字附近的日誌
因為通常時候我們用grep拿到的日誌很少,我們需要查看附近的日誌.
我是這樣做的,首先: cat -n test.log |grep "地形" 得到關鍵日誌的行號
3
/7
<3>得到"地形"關鍵字所在的行號是102行. 此時如果我想查看這個關鍵字前10行和後10行的日誌:
cat -n test.log |tail -n +92|head -n 20
tail -n +92表示查詢92行之後的日誌
head -n 20 則表示在前面的查詢結果里再查前20條記錄
1688
根據文章內容為您推薦
廣告
¥4700 元
查看
¥4700 元
查看
¥9.9 元
查看
¥4700 元
查看
¥4700 元
查看
4
/7
場景2:那麼按日期怎麼查呢? 通常我們非常需要查找指定時間端的日誌
sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
特別說明:上面的兩個日期必須是日誌中列印出來的日誌,否則無效.
5
/7
關於日期列印,可以先 grep '2014-12-17 16:17:20' test.log 來確定日誌中是否有該時間點,以確保第4步可以拿到日誌
這個根據時間段查詢日誌是非常有用的命令.
6
/7
如果我們查找的日誌很多,列印在屏幕上不方便查看, 有兩個方法:
(1)使用more和less命令, 如: cat -n test.log |grep "地形" |more 這樣就分頁列印了,通過點擊空格鍵翻頁
(2)使用 >xxx.txt 將其保存到文件中,到時可以拉下這個文件分析.如:
cat -n test.log |grep "地形" >xxx.txt
7
/7
這幾個日誌查看方法應該可以滿足日常需求了.
Ⅱ 如何設置Linux獲取動態及靜態IP地址
設置靜態IP方法:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改這個文件內容如下形式:
# Intel Corporation 82541GI Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=static #為靜態的
HWADDR=00:15:17:B2:DC:B5
ONBOOT=yes
IPADDR=10.20.134.199 #這個是設置的靜態IP地址
NETMASK=255.255.254.0
GATEWAY=10.20.134.1 #網關
修改後,需要重啟網路是更改生效:
/etc/init.d/network restart
設置動態IP方法:
vim /etc/sysconfig/network-scripts/ifcfg-eth1
內容如下:
# Intel Corporation 82566DM-2 Gigabit Network Connection
DEVICE=eth1
BOOTPROTO=dhcp #動態獲取IP
HWADDR=00:15:17:B2:DC:B7
ONBOOT=no
運行命令:
dhclient eth1
自動獲取動態IP地址
可以通過:ifconfig查看分配的IP地址。
Ⅲ 如何設置Linux獲取動態及靜態IP地址
方法/步驟
在終端中輸入:vi /etc/sysconfig/network-scripts/ifcfg-eth0
開始編輯,填寫ip地址、子網掩碼、網關、DNS等。其中「紅框內的信息」是必須得有的。
編輯完後,保存退出。
重啟網路服務。service network restart或/etc/init.d/network restart
ping網關,ping外網進行測試。都能ping通表示網路正常。
摘要:
---修改ip地址---
即時生效:
# ifconfig eth0 192.168.1.155 netmask 255.255.255.0
重啟生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0
---修改default gateway---
即時生效:
# route add default gw 192.168.1.1
重啟生效:
修改/etc/sysconfig/network-scripts/ifcfg-eth0
---修改dns---
修改/etc/resolv.conf
修改後即時生效,重啟同樣有效
---修改host name---
即時生效:
# hostname test1
重啟生效:
修改/etc/sysconfig/network
Ⅳ 如何讓linux載入當前目錄的動態庫
linux 載入當前目錄的動態庫的方法是:設置合適的環境變數LD_LIBRARY_PATH。x0dx0a設置方法有以下三種:x0dx0ax0dx0a1、臨時修改,log out之後就失效x0dx0a在terminal中執行:export LD_LIBRARY_PATH=./x0dx0ax0dx0a2、讓當前帳號以後都優先載入當前目錄的動態庫x0dx0a修改~/.bash_profile在文件末尾加上兩行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH x0dx0ax0dx0a3、讓所有帳號從此都優先載入當前目錄的動態庫x0dx0a修改/etc/profile在文件末尾加上兩行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH
Ⅳ Linux基本操作--動態進程
top [選項]
選項
-d 指定top命令每隔幾秒更新,默認是3秒更新
-i 使top不顯示任何閑置或者僵死進程
-p 通過指定監控進程ID來僅僅監控某個進程的狀態
交互操作說明
P 以CPU使用率排序,默認項
M 以內存的使用率排序
N 以PID排序
q 退出top
top後,按回車鍵,查看執行的進程
輸入u,再輸入用戶名(監視特定用戶)
輸入k,再輸入進程ID號(終止指定的進程)
top -d 10 //指定系統狀態更新的時間(每隔 10 秒自動更新, 默認是 3 秒)
參考:尚矽谷_Linux教程
Ⅵ linux動態庫和靜態庫的區別
靜態庫:這類庫的名字一般是libxxx.a,xxx為庫的名字。利用靜態函數庫編譯成的文件比較大,因為整個函數庫的所有數據都會被整合進目標代碼中,他的優點就顯而易見了,即編譯後的執行程序不需要外部的函數庫支持,因為所有使用的函數都已經被編譯進去了。當然這也會成為他的缺點,因為如果靜態函數庫改變了,那麼你的程序必須重新編譯。
動態庫:這類庫的名字一般是libxxx.M.N.so,同樣的xxx為庫的名字,M是庫的主版本號,N是庫的副版本號。當然也可以不要版本號,但名字必須有。相對於靜態函數庫,動態函數庫在編譯的時候並沒有被編譯進目標代碼中,你的程序執行到相關函數時才調用該函數庫里的相應函數,因此動態函數庫所產生的可執行文件比較小。由於函數庫沒有被整合進你的程序,而是程序運行時動態的申請並調用,所以程序的運行環境中必須提供相應的庫。動態函數庫的改變並不影響你的程序,所以動態函數庫的升級比較方便。linux系統有幾個重要的目錄存放相應的函數庫,如/lib
/usr/lib。
當要使用靜態的程序庫時,連接器會找出程序所需的函數,然後將它們拷貝到執行文件,由於這種拷貝是完整的,所以一旦連接成功,靜態程序庫也就不再需要了。然而,對動態庫而言,就不是這樣。動態庫會在執行程序內留下一個標記指明當程序執行時,首先必須載入這個庫。由於動態庫節省空間,linux下進行連接的預設操作是首先連接動態庫,也就是說,如果同時存在靜態和動態庫,不特別指定的話,將與動態庫相連接。
Ⅶ Linux下的動態共享鏈接庫的優點有哪些
動態共享庫有以下的優點,使它在Linux開發中比靜態鏈接庫更加的流行。
(1) 節省內存
動態共享庫無論被多少應用程序使用,在內存中都只存在一個動態共享庫的副本,而不像靜態鏈接庫那樣,一個應用程序在運行中用到靜態鏈
接庫,就會有多個靜態鏈接庫的副本 。
(2) 節省磁碟
這和節省內存有點相似,同樣這也是由於靜態鏈接庫存在多個靜態鏈接庫的副本造成的。同樣的應用程序,使用動態共享庫編譯出的版本通常比使用靜態鏈接庫編譯出來的版本要小。因此,在嵌入式系統開發中使用動態共享庫也不節省空間,提供了一種很好的選擇。
(3) 便於軟體修復與升級
由於動態共享是獨立於應用程序存在的,因此,用新版本的動態共享庫替舊版本的工作將變得非常容易。如果使用靜態鏈接庫的話,假設在一個靜態庫中發現了一個
ug,那麼要修正這個
ug的話,就要重新編譯所有使用這個靜態庫的應用程序,使用這個靜態庫的應用程序有很多的話,可以想像工作量是有多大。
(4) 提高性能
與採用靜態鏈接庫臃腫的應用程序相比,採用動態共享庫的應用程序明顯「苗條」得多,這樣當操作系統載入應用程序時,是需要把應用程序
復制到內存中的,這樣的「苗條」的動態鏈接庫也就有了很大的優勢,同時提高了程序的性能。
當然,動態鏈接庫在有上述這些優勢的同時,也有以下的幾個劣勢。復雜性,兼容性,調試困難。但是它在Linux上使用頻率上仍然比靜態鏈接庫要高的多。應用的更加廣泛。
Ⅷ 面試 | Linux 下的動態鏈接庫問題
在 Linux 開發時,我們經常會看到一些形如 xxx.so 的名稱出現,其中 so 是 Shared Object 的縮寫,即可以共享的目標文件,也就是我們所稱為的動態鏈接庫,和在 Windows 下大家玩 游戲 時遇到的 xxx.dll 錯誤中的文件是一個類型的。
面試中經常會問到以下問題:
庫是寫好的現有的,成熟的,可以復用的代碼。現實中每個程序都要依賴很多基礎的底層庫,不可能每個人的代碼都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行代碼的二進制形式,可以被操作系統載入內存執行。
庫有兩種:
在一個程序的編譯過程中,分為以下幾個步驟: 預處理 , 編譯 , 匯編 , 鏈接 。本文中討論的鏈接庫就是針對最後一個步驟「鏈接」而言的。
動態庫和靜態庫的區別
左圖為靜態鏈接庫,右圖為動態鏈接庫
對於靜態鏈接庫而言在鏈接階段,會將匯編生成的「目標文件.o」與引用到的庫一起鏈接打包到可執行文件中。因此對應的鏈接方式稱為靜態鏈接:
靜態鏈接可以理解為最後生成了一個「單文件免安裝綠色版」的程序,優點在於移植的時候只需要移動這一個文件,缺點在於文件體積非常大,為了解決這樣的問題,就有了動態鏈接庫。動態鏈接庫在程序編譯時並不會被連接到目標代碼中,而是在程序運行時才被載入。
動態庫連接到系統空間,如果多個程序連接了同一個庫,那麼只需要一份,優點在於編譯程序的時候不會將對應的庫文件全部打包在生成的程序中,而是保留了到對應庫的鏈接,缺點就是移植的時候如果只移動了對應的程序沒有安裝相關的庫的話,就會看到類似以下喜聞樂見的結果了。
在 Linux 下一個動態庫有y三個不同名字的文件組成:
當程序在內部列出所需要的鏈接庫時,僅僅使用 soname。當你創建一個鏈接庫時,使用 real name。安裝一個新的鏈接庫時,把它復制到一個DLL文件夾里,然後運行程序 ldconfig。ldconfig 檢查存在的 real name 文件,並且創建指向它符號鏈接 soname 文件。可能大家比較常見到的有 libsodium 等。
有了上面關於庫的一些基礎知識之後,我們可以開始嘗試創建一個動態庫來供程序使用了。
比如我們有一個求最大值的函數 max(int a,int b,int c) ,放在文件 max.c 中文件內容如下:
可以通過:
將其編譯為共享庫,-fPIC是編譯選項,PIC是 Position Independent Code 的縮寫,表示要生成位置無關的代碼,這是動態庫需要的特性; -shared是鏈接選項,告訴 gcc 生成動態庫而不是可執行文件。為了讓用戶知道我們的動態庫中有哪些介面可用,我們需要編寫對應的頭文件,比如可以寫一個 max.h :
設置一個驅動函數來測試我們編寫的動態庫:
通過 gcc test.c -L. -lmax來生成 a.out,其中-lmax表示要鏈接 libmax.so,-L.表示搜索要鏈接的庫文件時包含當前路徑。
但是這樣直接運行的話,會出現一個錯誤:
由於 Linux 是通過/etc/ld.so.cache文件搜尋要鏈接的動態庫的,而 /etc/ld.so.cache 是 ldconfig 程序讀取 /etc/ld.so.conf 文件生成的,本次使用的動態庫 libmax.so 並不在對應的目錄下,就會導致程序無法找到對應的動態鏈接庫,這樣我們的解決方法有二:
小結
動態鏈接庫是各個系統中的一個重要的組成部分且在 Linux 開發相關領域中尤為重要,也是一個面試的高頻考點,除了動態鏈接庫以外,還有以下相關知識也是高頻考點,在面試前一定要准備好:
本文作者:Nova Kwok
Ⅸ Linux下的靜態庫和動態庫
linux下的靜態庫和動態庫1.製作自己的動態庫和靜態庫linux下動態庫以.so結尾,靜態庫以.a結尾,它們都以lib開頭,比如一個庫名為net,那麼它的全名應該是libnet.so或者libnet.a。我們有兩個文件,hello.c和test.c,下面是兩個文件的內容//hello.c
www.shiwu.com
#include
<stdio.h>void
my_lib_func(){printf(Library
routine
called/r/n);}//test.c#include
<stdio.h>
www.shiwu.com
int
main(){my_lib_func();return
1;}test.c調用了hello.c的方法,我們把hello.c封裝成庫文件。無論是靜態庫還是動態庫,都是由.o文件組成,我們先把gcc
-c
hello.c生成.o文件製作靜態庫ar
crv
libmyhello.a
hello.o,ar是生成靜態庫的命令,libmyhello.a是我的靜態庫名。下一步就是在我的程序中使用靜態庫
可以看到已經有了Library
routine
called的結果,說明調用成功了。下面我們刪除libmyhello.a,看看程序是否還是運行正常
我們發現程序依然運行正常,說明靜態庫已經連接進入我們的程序中製作動態庫
www.shiwu.com
我們看見動態庫libmyhello.so已經生成,下面繼續使用
找不到庫文件,這個時候我們把so文件拷貝到/usr/lib下面
運行成功2.動態庫和靜態庫同時存在的調用規則我們可以發現,不論是動態庫還是靜態庫,程序編譯連接的時候都是加的參數-l,那麼當他們同時存在的時候,程序會選擇動態庫還是靜態庫呢。我們做個嘗試。
我們同時存在libmyhello.a和libmyhello.so,我們發現運行的時候,出現找不到動態庫的錯誤,由此,我們可以得出結論,同時存在動態庫和靜態庫的時候,gcc會優先選擇動態庫作者
梨樹陽光