2017年7月6日 星期四

《港都情人》~濁水溪公社


以下歌詞來自此youtube上面的DictatorBoy1的內容:
濁水溪公社 《港都情人》

2017年7月5日 星期三

根據空格切出欄位

要把純文字檔案每一行的第二個欄位給切出來,以下三個指令都可以用:
  • cut -d\  -f 2    (注意在backslash後面有兩個空格)
  • awk '{print $2}'
  • tr -s ' ' | cut -d ' ' -f 2
上述的指令即使欄位間的空格有很多個也一樣適用,下面的就只適用一個空格:
  • cut -d ' ' -f 2
以上內容參考use space as a delimiter with cut command
_EOF_

2017年7月4日 星期二

GROMACS無法用CUDA加速

系統是Ubuntu 16.04,在跑mdrun的時候出現下面問題
NOTE: Error occurred during GPU detection:
CUDA driver version is insufficient for CUDA runtime version 
Can not use GPU acceleration, will fall back to CPU kernels.
/usr/local/cuda/samples/1_Utilities/deviceQuery測./deviceQuery出現
./deviceQuery Starting... 
CUDA Device Query (Runtime API) version (CUDART static linking) 
cudaGetDeviceCount returned 35 -> CUDA driver version is insufficient for CUDA runtime version Result = FAIL
原本以為是CUDA driver與CUDA runtime version(也就是CUDA toolkit version)搭配不起來(搭配的列表看這裡),測試的指令如下:
  • nvcc --version    (看Cuda compiler driver、CUDA toolkit的版本)
  • nvidia-smi      (看系統安裝的硬體與driver的版本)
  • cat /proc/driver/nvidia/version    (同上,會顯示NVRM version)
但不管怎樣檢查,通通都是可以配合的版本。最後才想到,當初希望機器的顯示用內顯而不要用獨顯,因為這個緣故,造成程式無法去找到GPU來跑。所以下完下面的指令:
  • prime-select nvidia
這樣之後,機器就可以順利用CUDA加速了

2017年7月3日 星期一

大量搬移帳號

在Linux上面想要將A機器上面的帳號搬移到B機器上面,又不想要改密碼,可以藉由修改 /etc/passwd/etc/shadow 兩個檔案來完成。

首先,用下面的指令根據UID來排序A機器上面的帳號
  • sort -n -t ':' -k3 /etc/passwd
假設要移動的使用者帳號的UID從1111到2222,首先用下面的指令來看B機器上面有沒有UID從1111到2222的使用者
  • sort -n -t ':' -k3 /etc/passwd | awk -F ":" '$3>=1111 {print}' | awk -F ":" '$3<=2222 {print}'
確定B機器沒有上述帳號以後,才能安心地把帳號從A機器搬到B機器。這時候要在A機器上面把這些帳號印出來:
  1. sort -n -t ':' -k3 /etc/passwd | awk -F ":" '$3>=1111 {print}' | awk -F ":" '$3<=2222 {print $1}'
  2. sort -n -t ':' -k3 /etc/passwd | awk -F ":" '$3>=1111 {print}' | awk -F ":" '$3<=2222 {print $1}' | tr '\n' '|' | sed s'/.|$/\n/'
上面第1個指令是僅僅印出來帳號名稱、一行一個帳號,第二個指令則是變成egrep可以讀的pattern,這樣才能夠用下面的egrep指令將A機器裡面的 /etc/shadow 裡面的資料給抓出來:
  • sudo egrep -E `sort -n -t ':' -k3 /etc/passwd | awk -F ":" '$3>=1111 {print}' | awk -F ":" '$3<=2222 {print $1}' | tr '\n' '|' | sed s'/.|$/\n/'` /etc/shadow
最後把上述指令印出來的帳號相關資訊附加到到B機器的/etc/shadow檔案後面,這樣就完成從A機器大量搬移帳號到B機器,而且還不需要改密碼~

參考資料

_EOF_

2017年7月2日 星期日

打開與關閉Ubuntu 16.04的服務

以前的作法會是/etc/init.d或是upstart,但是到Ubuntu 15.04以後現在都是用Systemd。這邊分成兩個部分,一是單純的開關某個服務、二是設定系統開機預設要不要開啟服務。以下的服務名稱為ServiceName。比較可能搞混的用詞會是:
  • active, inactive:代表服務當前的狀態,開或是關
  • enabled, disabled:代表服務在重開機後會是開還是關