顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

2025年8月3日 星期日

暫時關閉history的方法

 有時候不得不在命令列模式下面輸入密碼,但又不想要被history給紀錄到:

  1. set +o history
  2. sudo -u root bash -c "dmesg -T"
  3. set -o history

這樣指令2, 3就都不會記錄在history裡面了。記得空格

_EOF_

2025年3月15日 星期六

用inxi指令列出網卡資訊,每兩行空一行

 一般的現代Linux,看網卡的使用的指令如下:

ip link
ip a
ip a show cx2
sudo ethtool cx2

依序列出所有網孔,所有網孔與對應的IP/MAC address、只顯示cx2這個網孔,cx2這網孔的進階資訊。但如果有安裝inxi這個指令的話,可以清楚的呈現網卡資訊,指令如下:

2024年9月15日 星期日

用fstab設定RAMdisk給/temp使用

伺服器上想要開機後直接有一個/temp資料夾,權限跟一般的tmp類似要開sticky bit,這樣只有owner可以刪除或重新命名,但所有使用者都可以建立自己的資料夾。做法是在/etc/fstab裡面加上一行:

tmpfs  /temp  tmpfs nosuid,nodev,size=64G 0 0

這樣就可以讓系統開機的時候自動產生一個64G的空間並掛在/temp下:

2024年6月16日 星期日

更新週期:奇數年Debian;偶數年Ubuntu

使用debian package兩個主要的Linux分支Debian與Ubuntu的釋出時間:

  • 2024:Ubuntu 24.04 LTS (Noble Numbat) 2024/4/25, kernel-6.6
  • 2023:Debian 12 (Bookworm) 2023/6/10, kernel-6.1
  • 2022:Ubuntu 22.04 LTS (Jammy Jellyfish) 2022/4/21, kernel-5.15
  • 2021:Debian 11 (Bullseye) 2021/8/24, kernel-5.10
    CentOS 9 Stream, 2021/12/3 with kernel-5.14.0
  • 2020:Ubuntu 20.04 LTS (Focal Fossa) 2020/4/23, kernel-5.4

2024年1月27日 星期六

用指令nslookup與dig查詢DNS資訊

在Windows裡面要查詢網域domain name的相關資訊,可以用nslookup。已舊交大的網域nctu.edu.tw為例,用指令去問Google的DNS(8.8.8.8也就是dns.google): 

  • nslookup nctu.edu.tw
  • nslookup -q=all nctu.edu.tw

若想要分項看,可以設定-q;若需要詳細資料請加上參數-debug

2023年8月10日 星期四

簡介TurnKey Linux軟體裝置

通常安裝Linux是為了要架站,提供一些服務。一種從頭開始的做法是手動安裝某套Linux distribution,像是Debian, Ubuntu, CentOS, Fedora, ...,再開始在上面安裝一系列的套件。例如說我要架動態網站,通常就會需要依序安裝下列的:

  • Linux:最底層的作業系統
  • Apache:提供網頁服務
  • MariaDB:提供資料庫服務
  • PHP/Python/Perl:寫動態網頁需要的程式語言

TurnKey Linux提供一套軟體裝置(Software Appliance)叫做LAMP Stack,使用者就不需要依據上述的順序安裝系統與多套服務,只要下載ISO檔或是VM檔,直接佈署使用。

2023年7月30日 星期日

調整mdadm的software RAID5, 6的效能

用mdadm做了兩個磁碟陣列,為了解釋方便用md5, md6來說明:
  • /dev/md5:是個software RAID-5的磁碟陣列
  • /dev/md6:是個software RAID-6的磁碟陣列
這種用mdadm做出來的software RAID可以透過下列方式來調整效能

2022年1月20日 星期四

R套件安裝後存在系統上的位置

安裝在Linux上面的R,可用下面的指令來看library路徑:

  • .libPaths()

在Debian裏面預設會顯示(前面的數字代表使用套件的順序、藍色代表在R環境下安裝、綠色代表在系統環境下安裝):

  • [1] "/home/使用者名稱/R/x86_64-pc-linux-gnu-library/3.1
  • [2] "/usr/local/lib/R/site-library"
  • [3] "/usr/lib/R/site-library"
  • [4] "/usr/lib/R/library"

2022年1月1日 星期六

安裝linux-fincore 1.3.0到Debian 8.8

在Linux上面要檢查某個檔案有冇被快取在記憶體上,可以用linux-fincore這個指令。但這指令沒有被APT給收錄,也找不到.deb包可以用dpkg安裝。下面介紹安裝過程

Step 1:下載source code,安裝編譯環境需要的套件

Google Code Archive的linux-ftools,找到source後下載。

wget https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/linux-ftools/source-archive.zip
mv source-archive.zip linux-ftools-1.3.0.zip
md5sum linux-ftools-1.3.0.zip

這邊算出來的md5 checksum是 ae142ebe7c1448d20ec42756d64adf08

2021年6月10日 星期四

Linux看時間到毫秒、微秒、奈秒

下指令當下的時間可以顯示到奈秒

  • date +"%Y-%m-%d %T.%N"
  • sleep 1.5
  • date +"%Y-%m-%d %T.%N"
  • sleep 1.5
  • date +%s.%N

2020年9月2日 星期三

Too many open files

程式跑到一半死掉惹,跳出了錯誤訊息:

  • Too many open files

這時候要用ulimit這個指令來看開檔數目限制

  1. ulimit -n
  2. ulimit -Hn

第一個是軟限制,也就是超過這個值系統會出現警告訊息;第二個指令則是硬限制,系統不允許程式在跑的時候使用超過這個值的資源

2020年8月25日 星期二

使用visudo設定sudo的設定檔sudoer

sudo是一個不需要在知道root密碼的情況下,可以執行root權限的指令。 visudo則是去修改sudo的設定檔,也就是 /etc/sudoer的指令。若要讓某使用者user可以使用root權限來執行所有指令,最簡單的設定方式為:

  • user    ALL=(ALL)    ALL

上述三個欄位分別是:

  1. 要使用sudo的使用者帳號
  2. 登入者的來源主機=(可切換的身分):通常來源主機會是ALL,而後面可切換的身分可以寫成root,也可以寫成其他使用者
  3. 可下達的指令:填寫ALL代表可以執行切換身份後可執行的所有指令,若是指定某些指令,那麼在這邊要填入絕對路徑。若有多個指令,用逗點分隔

2020年8月11日 星期二

讓/etc/group依照gid排序

要讓 /etc/group 這個檔案裡面的群組依照GID排序

  1. cd /etc
  2. sudo sort -t ':' -k 3 -n -o group group

2020年7月10日 星期五

top的S欄位:程序狀態

使用top看程序的執行狀態,在VIRT RES SHR和%CPU %MEM中間會有一個叫做S的欄位,這個欄位顯示的是程序狀態(Process Status)。由於每個處理器核心一次只能夠執行一個程序(process),故當程序數目超過處理器核心的時,勢必有些程序會暫時不被CPU處理(睡眠中),因此才會出現程序的執行狀態。一般而言,某個程序的狀態只會是下面5種的其中一種:
  • Rrunning,程序正在CPU裡面處理
  • Ssleeping,程序睡眠中、但可以用傳送signal去中斷程序
  • Duninterruptible sleep,睡眠中但無法用傳送signal來中斷程序
    常見於程序等待硬碟的時候
  • T:traced or stopped,程序暫停中

2019年9月27日 星期五

類UNIX系統上的設備檔案(device file)

在類UNIX系統(UNIX-like system)上面不只是一般文件是以檔案方式來存取、目錄也是檔案、甚至設備(devices)也是檔案。這些設備檔案(device file)會放在 /dev 這個資料夾下面。以下舉最常見到的設備檔案:
  1. /dev/console:目前使用的終端機
  2. /dev/sda:第一個SATA硬碟
上述兩者對應到的就是設備檔案中最常見的兩種形式:

2019年8月26日 星期一

釋放Linux記憶體或交換區的快取

手動釋放指令除了跑benchmark可能會有所影響以外,其實沒什麼好處。首先:
  • sync; sync; sync
完成所有檔案寫入,跑三次只是個人習慣。再來釋放快取有下面三種方式:
  1. echo 1 > /proc/sys/vm/drop_caches
  2. echo 2 > /proc/sys/vm/drop_caches
  3. echo 3 > /proc/sys/vm/drop_caches
以上都用root權限執行,這三個指令的意思分別是:

2019年6月18日 星期二

用mdadm掃描硬碟上的磁碟陣列磁區

mdadm這隻程式會去找/etc/mdadm.conf來看哪些硬碟有做磁碟陣列,但當拿到一個含有磁碟陣列的外接硬碟,可以用下面指令來自動掃描並啟動磁碟陣列:
  • mdadm --assemble --scan
若只是要看有哪些磁碟陣列,則是用指令:
  • mdadm --detail --scan
若只是開啟某外接硬碟分割區的磁碟陣列,用下面指令:
  1. mdadm --assemble /dev/md1 /dev/sda1 /dev/sdb1

2019年6月13日 星期四

cp複製檔案的時候保留路徑結構

比較下面兩個複製檔案的指令:
  1. cp src/prog.js images/icon.jpg /tmp/package/
  2. cp --parents src/prog.js images/icon.jpg /tmp/package/
上面的差別如下:

2019年6月10日 星期一

/dev/shm/下面的檔案消失了

第一次遇到放在/dev/shm下面的資料會自動被系統刪除。根據《16.04 LTS and /dev/shm/ Files Disappearing》這篇裡面作者的自問自答,是systemd裡面的設定,會把未登入的使用者裡面與interprocess communication (IPC)相關的資料刪除。設定放在:
  • /etc/systemd/logind.conf
修改裡面的參數成下面:

2019年6月6日 星期四

CentOS沒有程式在跑卻顯示高負載

有台CentOS 6的舊機器,使用top沒有看到甚麼高負載的程式但使用uptime卻會看到很高的負載量。通常這種狀況都會是nfs在搞鬼,大概會是下面這種狀況:
  1. 本地端使用mount nfs掛載了遠端機器的資料夾
  2. 遠端機器的nfs service掛了或是關掉了
  3. 本地端使用df, ls等去看掛載的資料夾,然後就一直在等待nfs回應
    雖然這些程式不怎麼吃資源,但卻會出現在負載上面

解決方案就是把nfs給掛好,或是刪除這些卡住的指令: