——“哈嘍,能請教你一下怎樣在R server中調用Linux下的工具?”
創(chuàng)新互聯(lián)建站服務項目包括羅城網站建設、羅城網站制作、羅城網頁制作以及羅城網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,羅城網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到羅城省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
——“你為什么要這么做呢?”
——“我想把Linux工具輸出的結果直接在R中分析,不想換來換去”
bedtools 是一個非常香的工具,幾乎是人盡皆知,是一個強大的處理bed等文件的工具,正如其自己描述的一樣: a powerful toolset for genome arithmetic 。bedtools目前只支持在Linux下以命令行的形式運行,所以我們經常會遇到上面的問題。
那么如何解決呢?給大家分享一個好物,既然我們不想在Linux下運行bedtools,那為什么不在R下運行呢?感謝 北卡羅來納大學教堂山分校的Phanstiel Lab 給了我們這樣的機會,開發(fā)出了R下的bedtools—— bedtoolsr 。 不過,有喜必有悲,看下面這句話:
bedtoolsr should work on any system with R and bedtools installed. It has been tested on macOS (version 10.14 "Mojave") and Linux (Ubuntu version 18.04). bedtools is not available for Windows; however, you can either use a virtual machine or Windows Subsystem for Linux . In either case, R from the Windows side would not be able to access bedtools running on the Linux side, so R and bedtoolsr would also have to be installed on the Linux side.
bedtools intersect的功能不用多介紹,直接上圖:
這不是和bedtools intersect功能選項幾乎一模一樣?
這里還是用官網的示例數(shù)據(jù)來做,主要是想輸出有交集的染色體坐標區(qū)間及相交區(qū)域的大?。?/p>
更多的功能就待大家去探索了~把這個包支持的函數(shù)全部列在下面了,對應bedtools的工具找就好了!
今天又是摸魚的一天!
一次摸魚的機會,看到群里小伙伴問了一嘴 netstat -tnpl 這個命令是干啥的,這個命令用過很多,但是我其實也沒有認真研究過,但是這是一個問題,我不能放過它,而且 netstat 這個命令我日常就用來查詢端口的監(jiān)聽狀態(tài)了,所以趁著這次機會,一起搞懂 netstat 這個命令。
netstat 這個命令在 Linux 、Windows 和 MacOS 操作系統(tǒng)下都兼容,不同的是,netstat 在 UNIX 下顯示詳細信息的命令是 man netstat ,而在 Linux 和 Windows 下面是 netstat --help 。
當我在 Linux 下執(zhí)行 man netstat 命令之后,系統(tǒng)顯示出來的提示著實讓我嚇一大跳,看來這個命令內容很多啊!不要被這么長的描述嚇到,我們一步一步來。
首先來了解一下 netstat 這個命令是干啥的。
官方給我們的解釋就是
列出網絡狀態(tài)
但是這網絡狀態(tài)都有啥呢?帶著疑問,我在 Linux 下執(zhí)行了一下。
打印出來是一個六元組,六元組每一列的內容分別是
仔細看了一下這個六元組,這好像表明 netstat 這個命令是用于監(jiān)控傳入和傳出的網絡連接和狀態(tài)的一個命令行工具啊 。
從整體上來看,netstst 的輸出結果可以分為兩部分,一部分是 Active Internet connections ,稱為 活躍 TCP 連接 ,其中的 Recv-Q 和 Send-Q 指的是客戶端發(fā)送隊列和客戶端接收隊列。這兩個隊列的值一般都是 0 ,如果不是 0 的話表示有消息堆積還沒有發(fā)出去/取出,這種情況一般很少見到。
另外一部分是 Active UNIX domain sockets , 稱為 活躍的 Unix 域套接字 ,這部分中的 socket 和網絡 socket 套接字一樣,不同的是,這塊只能用來本地通信,性能要比網絡 socket 高。Active UNIX domain sockets 也是一個六元組,分別表示
下面我們來解釋一下 netstat --help 列出來的一些參數(shù),我們從最常見的一些參數(shù)開始入手,這樣大家看起來也能形成階段性記憶,不至于失去重點。
-a 這個參數(shù)默認會監(jiān)控所有的 socket 連接。
包括已經監(jiān)聽的、已經建立連接的、客戶端發(fā)送的等待服務器的和未被監(jiān)聽都會被列出來。
netstat -at/-t
netstat -at 和 netstat -t 這倆后綴都是用來監(jiān)聽與 TCP 協(xié)議有關的端口,不同的是 netstat -at 會監(jiān)聽所有 State(狀態(tài))下的端口,而 netstat -t 僅僅會監(jiān)聽 ESTABLISHED 狀態(tài)的端口。
netstat -at
netstat -t
netstat -au/-u
同樣的, netstat -au 和 netstat -u 都會監(jiān)控與 UDP 有關的端口,不同的是 netstat -au 會監(jiān)聽所有 State(狀態(tài))下的端口,而 netstat -u 僅僅會監(jiān)聽 ESTABLISHED 狀態(tài)的端口。
netstat -au
netstat -u
我這里測試是沒有監(jiān)控已經建立連接狀態(tài)下的 UDP 協(xié)議。
netstat -ap
這條命令用于列出程序運行的端口,常用的命令是
比如我們要找 http 程序,就是 Netstat -ap|grep http
還可以直接列出端口號
netstat -l 用于監(jiān)聽正在處于監(jiān)聽狀態(tài)的端口(讀起來還真有那么點費勁,為了讀起來更順暢,后面直接使用 列出 替換監(jiān)聽)。
netstat -lt 只用于列出所有監(jiān)聽 TCP 端口。
netstat -lu 只用于列出所有監(jiān)聽 UDP 端口。
netstat -lx 只用于列出所有監(jiān)聽 UNIX 端口。
netstat -s 用于列出所有端口的統(tǒng)計信息。
netstat -st 用于列出 TCP 端口的統(tǒng)計信息。
netstat -su 用于列出 UDP 端口的統(tǒng)計信息。
netstat -p 可以與其他參數(shù)一起使用,例如 netstat -pt 就可以列出服務名稱和 PID 號。
使用 netstat -c 將每隔一秒列出網絡信息。
netstat -r 用于列出路由核心信息。
這條命令會列出系統(tǒng)支持的 地址族(Address Family) 。
netstat -i 用來列出網絡接口數(shù)據(jù)包,包括傳輸和接收具有 MTU(最大傳輸單元)的數(shù)據(jù)包。
另外, netstat -ie 還用于列出內核接口表,和 ifconfig 命令很相似
所以,回到文章剛開始的那個疑問,netstat -tnpl 是干什么用的,其實這就是幾個參數(shù)的組合
我們執(zhí)行一下這個命令。
另外,在 Linux 中,已經推薦使用 ss 來替代 netstat ,使用 ip route 來替代 netstat -r ,使用 ip -s link 來替代 netstat -i ,使用 ip addr 來替代 netstat -g 了。
[TODO]BCM2835這貨SoC是ARM1176JZF-S核,armv6z架構.
然后WebRTC默認的用的arm-linux-gnueabihf是armv7的架構...
所以,誰要編譯的注意這個問題,手動添加編譯鏈接的命令補丁,我先摸魚去了.
首先,樹莓派先要安裝一堆依賴庫:
sudo apt-get install libgtk-3-dev #gtk+-3.0,gmodule-2.0,gthread-2.0
sudo apt-get install libc6-dev #libm.so
sudo apt-get install libasound2-dev
sudo apt-get install libpulse-dev
然后,掛載樹莓派TF卡到你的PC上來使用樹莓派的rootfs
用gn gen生成構建項目腳本時請?zhí)砑?
is_clang=false
target_os=liunx
target_cpu=arm
sysroot=(樹莓派的root)/usr/lib/arm-linux-gnueabihf/
debug=false
treat_warningaserror????=false #禁止warning報錯,自己放狗搜下是啥吧
其次魔改build/config那個啥啥的py文件添加(樹莓派的root)/usr/lib/arm-linux-gnueabihf/pkg_config/
不然gn gen生成會失敗.
最后就是有的編譯會缺頭文件,自行解決吧.