我們在探索linux核心的時候,經常需要調整下變數的值,看它對系統的影響。如果這個值沒有透過/proc來修改的話,那只能編譯核心。這個步驟是非常繁瑣的。現在我們有systemtap這個利器來幫忙了。
演示如下:
我們通過修改過
extern int sysctl_tcp_fin_timeout;的值來達到目的。是因為這個值是proc匯出的 我們好驗證是否成功。
root@localhost ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
15000
# cat test.stp
probe begin
probe kernel.function("do_tcp_setsockopt")
# stap -g test.stp 18000
ready go
這個時候 stap在執行, 只是還沒有觸發do_tcp_setsockopt.
現在我們來觸發
# erl
erlang r13b02 (erts-5.7.3) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
eshell v5.7.3 (abort with ^g)
1> = gen_tcp:listen(0, ).
2>
2> inet:setopts(lsock, ).
ok3>
ok,這時候回頭可以看到stap打出來以下:
sysctl_tcp_fin_timeout = 18000
我們來驗證下:
root@localhost ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
18000
ok,成功。
tips:
1. stap對全域性變數的寫需要-g guru模式。
2. 全域性變數必須在乙個單元內的函式裡面才可以修改, 而且必須是在核心上下文。
linux下用python來批量修改檔名
我們在維護系統的時候,有時候遇到需要批量修改乙個資料夾下的所有檔名,這個時候,如果用人工手動的去修改的話,那就太沒有效率了,這個時候我們需要乙個指令碼來完成我們的任務,當然用shell,perl也可以完成,今天這裡介紹的是用python來解決這個問題,我們假設在 root test 下面有4個檔案,...
用Visual C 來建立 修改登錄檔資訊
在 如何讀取註冊資訊 和 用visual c 來刪除登錄檔中的註冊資訊 文章中,已經 了用visual c 來讀取 刪除登錄檔中的註冊資訊,在本篇文章中我們就來介紹visual c 登錄檔程式設計的另外二個重要的操作 建立註冊資訊和修改註冊資訊。在上二篇文章中,我們已經知道,由於visual c 本...
用dom4j來修改xml文件
用dom4j來修改xml文件 建立文件document document document documenthelper.createdocument 建立元素 element element document.addelement 元素名稱 建立屬性 element.addattribute 屬性...