【免費註冊】 【會員登入】 【個人資料】 【會員列表】 【論壇幫助】 【論壇搜尋】 【登出論壇】

∮Ω奧米加空間∮
∮Ω奧米加空間∮»技術文件區»Linux 筆記

訂覽該主題更新消息 | 將該主題推薦給朋友 發表新主題 發起投票  回覆
作者 主題     分頁:[ 1 2 3 4 5 ]
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 41 篇) 【轉貼】NetHogs 实时监控进程/程序网络使用情况



資料來源:OMCloud

NetHogs是一个小的开源的流量监控工具。说起流量监控工具其实非常多,如:iftop、vnstat,这些都是统计和监控网卡的流量。而NetHogs的特点在于可以实时的监控每个进程的带宽占用情况,当我们的服务器的带宽大量占用或者其它的一些网络异常,我们可以通过NetHogs来查看是哪个进程或程序异常导致带宽被占用,从而解决带宽问题。



一、NetHogs安装:

1.推荐使用安装方式:

Ubuntu/Debian下安装:

  #apt-get install nethogs

ReadHat/CentOS下安装:

  #yum install nethogs

以centos示例:



2.自行下载相关包进行编译安装:

  yum -y install gcc-g++ libpcap libpcap-devel

  wget http://jaist.dl.sourceforge.net/project/nethogs/nethogs/0.8/nethogs-0.8.0.tar.gz  -p /usr/local/src

  cd /usr/local/src

  tar -xvf nethogs-0.80.tar.gz

  cd nethogs

  make && make install

二、使用:

nethogs [-h] [-V] [-d] [-v] [-t] [-c] [-p] [-s] [device(s)]



具体使用示例:

直接使用NetHogs(默认检测设备eth0的带宽,并且默认是每秒刷新一次)

#  nethogs  



使用-d参数设置5秒刷新一次

# nethogs -d 5

指定监控的网卡设备的带宽

# nethogs eth1

# nethogs eth0 eth1

三、具体参数说明:

  (1)参数和用法:

-h :显示可用命令的用法

-V :打印版本信息

-d :延迟刷新率(延迟刷新时间),单位是秒,默认为每秒刷新一次

-v :选择视图模式

-p :混合模式下嗅探(不推荐)

-t :跟踪模式

-c :限制刷新的次数 (好像只有version 0.8.1-SNAPSHOT及以后版本才有)

-s :按发送的流量排序 (好像只有version 0.8.1-SNAPSHOT及以后版本才有)

  device(s):监听的设备,默认是eth0(网卡设备名)



  (2)NetHogs交互控制:(使用一下按键操作)

  m: 按m键,切换单位或显示占用速度;切换顺序是(KB/sec,KB,B,MB)

  r : 按 r 键,按接收流量排序

  s : 按 s 键 ,按发送流量排序

  q : 按 q 键退出

四、NetHogs的扩展使用

  1.将nethogs监控进程的信息输出重定向到日志文件中

  #nethogs -c 1 -t > test.log (好像0.8.0的版本不支持)



注意:如果不加-t参数,重定向到文件中的内容可能是乱码。。。




本帖由dc最後編輯於2018-06-15 17:24

Your mind to my mind,

your thought to my thought
發表時間:2018-06-15 17:19
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:203.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 42 篇)

資料來源:Tsung's Blog

Linux: umount 時 出現 "Device is busy" 的解法

當任何目錄有 mount, 然後有程式 使用/掛 在那個目錄上的話, 就沒有辦法 umount 掉, 於 umount 時會出現 Device is busy 的訊息.

要怎麼找出是哪個程式掛在那個目錄上? 然後去把那個程式砍掉呢?


使用 fuser 的指令
那要怎麼找出是哪個程式掛在那個目錄上, 可以使用 fuser - identify processes using files or sockets

假設現在 mount 起來的目錄是 /media/share

查詢: fuser -m /media/share
顯示: /media/share: 25023c
就代表是 process 25023(pid) 有使用到此目錄, 後面 c 代表的意思可參考下述:

c: current directory.
e: executable being run.
f: open file. f is omitted in default display mode.
F: open file for writing. F is omitted in default display mode.
r: root directory.
m: mmap'ed file or shared library.
要把這個資源釋放的話, 可以有下述做法:

kill -9 25023 # ps aux | grep 25023 應該就會看到它
fuser -m -v -i -k /media/share # 會問你是不是要把 25023 這個 kill 掉, 選 y 就會 kill 掉
訊息如下:
              USER      PID   ACCESS COMMAND
/meida/share: root      25023 ..c..  bash
Kill process 25023 ? (y/N) y

相關網頁
解决 umount時出現的 “Device is busy”



例如我們掛載的目錄是 /mydb 想寫在 sh 裡讓他自動按下 y 強制移除的話可以如下

echo y|fuser -m -v -i -k /mydb
umount /mydb


但還是建議寫在 sh 裡的指令不要寫成相同的目錄來掛載,盡量分開比較好~
以免 umount 失敗要 mount 的資料夾不相同。

舉例
mount -t nfs 192.168.1.3:/test1 /mnt/nfs
cp ${TIME}.gz /mnt/nfs
umount /mnt/nfs
mount -t nfs 192.168.1.3:/test2 /mnt/nfs
cp ${TIME}.gz /mnt/nfs
/usr/bin/find /mnt/nfs/ -name "*.gz" -mtime +7 -exec rm -f {} \;
umount /mnt/nfs

test1 umount 失敗的話 接下來 mount test2 會失敗,然後就在 test1 裡執行了 rm 的指令,本來要刪 test2 裡的資料變成刪除了 test1 裡的資料。
如果在 test1 umount /mnt/nfs 前面加強制移除 echo y|fuser -m -v -i -k /mnt/nfs
可以解決這個問題~但還是建議分開如下

mount -t nfs 192.168.1.3:/test1 /mnt/test1
cp ${TIME}.gz /mnt/test1
umount /mnt/test1
mount -t nfs 192.168.1.3:/test2 /mnt/test2
cp ${TIME}.gz /mnt/test2
/usr/bin/find /mnt/test2/ -name "*.gz" -mtime +7 -exec rm -f {} \;
umount /mnt/test2

提供大家參考~


目前遇到一個案例 遠端掛載其他伺服器的 NFS 但是來源 IP 更換,要 umount 會一直停在那無法進行~
改用 umount -l 後面接掛載的目錄即可卸載成功
例如 umount -l /mnt/nfsshare

-f Force unmount (in case of an unreachable NFS system). (Requires kernel 2.1.116 or later.)
-l Lazy unmount. Detach the filesystem from the filesystem hierarchy now, and cleanup all references to the filesystem as soon as it is not busy anymore. (Requires kernel 2.4.11 or later.)




本帖由dc最後編輯於2022-12-07 09:34

Your mind to my mind,

your thought to my thought
發表時間:2019-07-17 10:56
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:203.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 43 篇)

資料來源:Aim Wang

bash 用變數內容當變數名稱取值

在很多情況下我們會遇到無法預知個數的變數群,而且變數名稱最後是採用數字來當作區別,因為是未知個數,所以要使用一個動態迴圈來處理,如何取得個別數值來處理變得很重要。參考下面的範例:
DNS1="8.8.8.8"
DNS2="8.8.4.4"
DNS3="0.0.0.0"
DNS4="139.175.150.20"
DNS5="168.95.1.1"
DNS_CNT=5
RESOLV_CONF="/etc/resolv.conf"
i=1
echo "; generated by my script" > $RESOLV_CONF
while [ $i -le $DNS_CNT ]
do
    eval "DNS_ADDR=\$DNS$i"
    if [ "0.0.0.0" != "$DNS_ADDR" ]; then
        echo "nameserver $DNS_ADDR" >> $RESOLV_CONF
    fi
done
最主要看 do 迴圈的第一行,eval "DNS_ADDR=\$DNS$i" ,因為 eval 會去執行它後面帶出來的那一行,而 \$ 會是 $ 符號,$i 則是目前 i 的值,因此當 i=1 時 "DNS_ADDR=\$DNS$i" 就會是 DNS_ADDR=$DNS1,透過 eval 執行,就會把 DNS1 的值帶給 DNS_ADDR 以利後面處理。






Your mind to my mind,

your thought to my thought
發表時間:2020-10-10 09:49
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:118.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 44 篇)

ESXi 底下的 Centos 7 增加硬碟容量

df -h
看一下容量為 16GB


fdisk -l
可以看到只有 /dev/sda 一顆硬碟,我們要擴充 Disk /dev/mapper/centos-root: 14.4 GB
Disk /dev/sda: 17.2 GB


硬碟預設 16GB 我們調整為 30GB 後重開機
reboot


fdisk -l
可以看到 Disk /dev/sda: 32.2 GB 容量增加了,但是這個沒變 Disk /dev/mapper/centos-root: 14.4 GB


建立分割
fdisk /dev/sda
n
p
3
預設 Enter
預設 Enter
t
3
8e
p
w


重開機使剛剛建立的分割區生效
reboot
沒重開機的話等等要下的指令會提示找不到 /dev/sda3

將剛剛建立的分割區 /dev/sda3 轉換成 PV
pvcreate /dev/sda3


檢視現有VG名稱
vgdisplay
可以看到 VG Name 為 centos 記錄下來


擴充 VG 要填 vg name 與 分割區
vgextend centos /dev/sda3


確認一下 VG 是否已擴充
vgdisplay
原本 VG Size               <15.00 GiB
現在 VG Size               28.99 GiB


確認一下 LV 路徑
lvdisplay
原本 LV Path                /dev/centos/root
原本 LV Size                13.39 GiB


擴充 LV 要填 LV Path 與 分割區
lvextend /dev/centos/root /dev/sda3


擴展 xfs 檔案系統 後面填的是 df -h 看到的根目錄檔案系統名稱
xfs_growfs /dev/mapper/centos-root


df -h 看一下空間已經擴充完畢
/dev/mapper/centos-root   28G




本帖由dc最後編輯於2021-04-12 15:07

Your mind to my mind,

your thought to my thought
發表時間:2021-04-12 15:06
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:118.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 45 篇) Shell substring with sed in a variable

在變數中帶有sed的Shell子字串

資料來源:stackoverflow

在 bash linux 使用這個命令可以正常輸出
echo "example=value" | sed "s/^example=\(.*\)$/\1/"

但是放在變數裡的話,輸出的是尚未 sed 過的原始值
var="example=value" | sed "s/^example=\(.*\)$/\1/"
echo $var

我該如何做呢?如下用 $() 包起來即可
var=$(echo example=value | sed "s/^example=\(.*\)$/\1/")
echo $var
這樣輸出的 $var 就是 sed 取代過後的值囉~




本帖由dc最後編輯於2022-03-24 11:20

Your mind to my mind,

your thought to my thought
發表時間:2022-03-24 11:20
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:203.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 46 篇)

我們將 檔案名稱 放在 /db/t.txt 裡一行一個檔案
我要將檔案用 rar 壓縮
-m0 不壓縮打包
-v4095000k 4GB 一個檔案
-rr3 恢復紀錄 3%
-rv1 一個修復檔
-p123456@ 包含檔名加密密碼為 123456@

逐行讀取帶入參數並寫入 ok.sh

while read LINE
do
echo "rar a -r -m0 -v4095000k -rr3 -rv1 -p123456@ /db/$LINE.rar ./$LINE" >> ok.sh
done < /db/t.txt






Your mind to my mind,

your thought to my thought
發表時間:2022-04-23 08:23
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:114.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 47 篇)

Ubuntu 22.04 桌面版 部署 SSH 與 RDP

sudo apt-get install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh

sudo apt-get update
sudo apt install xrdp
sudo apt install xfce4
sudo apt-get install xfce4-terminal tango-icon-theme
echo xfce4-session > ~/.xsession
sudo service xrdp restart
sudo systemctl enable xrdp

安裝 Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb


伺服器版本
預設 /dev/mapper/ubuntu--vg-ubuntu--lv 都割很小如果要加大的話
資料來源:serverfault
sudo lvextend --extents +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
sudo df -h

於Xfce 桌面環境顯示中文
資料來源:learningsky.io
sudo apt-get install language-pack-zh*
sudo apt-get install -y chinese*
sudo apt-get install fonts-arphic-ukai fonts-arphic-uming fonts-ipafont-mincho fonts-ipafont-gothic fonts-unfonts-core
sudo reboot




本帖由dc最後編輯於2022-05-05 18:01

Your mind to my mind,

your thought to my thought
發表時間:2022-05-04 21:32
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:114.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 48 篇)

如果要列出當前目錄下的檔案名稱請這樣下指令
ls -1 -F | grep -v [/$]

資料來源 程式人生
https://www.796t.com/content/1548086062.html






Your mind to my mind,

your thought to my thought
發表時間:2022-06-02 14:40
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:114.*.*.* 編輯  引言回覆 
dc
管理員



性別:男
來自:瓦肯星
發表總數:10723
註冊時間:2002-05-07 16:32
(第 49 篇)

#列出當前目錄下的檔案名稱依時間排序舊的在前面。要倒序的話去掉 -1tr 中的 r
ls -1tr -F | grep -v [/$] >> 20220714.txt

#將撈出來的檔案刪除寫入 del20220714.sh
while read LINE
do
echo "rm $LINE" >> del20220714.sh
done < 20220714.txt

之後 sh del20220714.sh 就可以刪除檔案囉






Your mind to my mind,

your thought to my thought
發表時間:2022-07-14 10:25
dc的個人資料 傳送郵件給dc dc的個人首頁 dc發表的所有文章 送出悄悄話給dc IP:114.*.*.* 編輯  引言回覆 
所有時間均為GMT+8, 現在是2024-04-19 13:02     分頁:[ 1 2 3 4 5 ]
訂覽該主題更新消息 | 將該主題推薦給朋友 發表新主題 發起投票  回覆

快速回覆
主題 ( 回覆文章可以不輸入標題 )
URLs自動分析
有回覆時郵件通知
禁用表情符號
使用簽名

<聯絡我們 - OMEGA - 控制面板>

Powered by Centaur & Joksky & DC, ver 2003.08.14
Copyright ©2002-2008 PHPY.COM


頁面生成時間:0.0084941387176514