Linux 隨手記 2

Linux 終於到第二篇了

1. samba設定文章

jerry真厲害
第一篇 samba 安裝與設定 http://download.ithome.com.tw/article/index/id/2641?tag=hot
第三篇 samba 帳號目錄權限設定 http://download.ithome.com.tw/article/index/id/2661

資料來源:IThome jerry大文章


2. Live USB製作

fedora 官方有提供 Live USB 製作程式呢!透過 Jerry大的說明可以得知
1. 可以做很多種版本的Live USB。如CentOS、OpenSUSE、Ubuntu等等
2. 必需使用 Live CD ISO檔製作,不能使用Live DVD ISO檔

http://download.ithome.com.tw/article/index/id/3488

資料來源:IThome jerry大文章
Fedora官方連結:
https://fedorahosted.org/releases/l/i/liveusb-creator/liveusb-creator-3.11.1-setup.exe


3. vSphere 5.5 vMotion虛擬機器即時移轉

資料來源:IThome jerry大文章
http://download.ithome.com.tw/article/index/id/4426


4. vSphere 5.5 虛擬機器運作中增加磁碟空間

資料來源:IThome jerry大文章
http://download.ithome.com.tw/article/index/id/4335?tag=hot


5. vCenter 5.5 虛擬機器運作中加裝記憶體和CPU

資料來源:IThome jerry大文章
http://download.ithome.com.tw/article/index/id/4145


6. CentOS 6.x 高可用性備援

資料來源:IThome jerry大文章
http://download.ithome.com.tw/article/index/id/7839 [1]
http://download.ithome.com.tw/article/index/id/7840 [2]
http://download.ithome.com.tw/article/index/id/7841 [3]


7. CentOS 6.x 負載平衡

資料來源:IThome jerry大文章
http://download.ithome.com.tw/article/index/id/7836 [1]
http://download.ithome.com.tw/article/index/id/7837 [2]
http://download.ithome.com.tw/article/index/id/7838 [3]


8. CentOS phpMyVisites 網站流量分析軟體

資料來源:IThome jerry大文章
http://download.ithome.com.tw/article/index/id/7842 [1]
http://download.ithome.com.tw/article/index/id/7843 [2]
http://download.ithome.com.tw/article/index/id/7844 [3]
http://download.ithome.com.tw/article/index/id/7845 [4]


9. 時間設定指令 -- date

範例:
date <== 顯示現在日期時間
date 011309502015 <== 設定時間為 1月13日上午9點50分 2015年
date +%Y%m%d%H%M%S <== 20180304174711
date -d '1 day ago' +%Y%m%d <== 顯示前一天的日期,西元以4碼表示
date -d '-1 day' +%Y%m%d <== 同上
date -d '1 month ago' +%Y%m <== 顯示前一天的日期,西元以4碼表示,只顯示到月

補充1:date 的顯示方式非常多,可以看看 man 哦!
補充2:如果在 3/30日打 date -d '1 month ago' +%Y%m%d,會出現 3/1日哦!因為 2月沒有30日

資料來源:IT達人
http://www.itmaster.tw/linux-%E4%B8%8A%E8%A8%AD%E5%AE%9A%E6%99%82%E9%96%93-linux-date/


10. whereis 指令

whereis zip <== 找出zip的二進位檔及說明檔
whereis -b zip <== 只找出zip的二進位檔,一般都是執行檔
whereis -m zip <== 只找出zip的說明檔
whereis -s zip <== ?

鳥哥的Linux私房菜


11. locate 指令

locate zip <== 找出有zip關鍵字的檔名

鳥哥的Linux私房菜


12. yum 抓取光碟片的資料

有些時候,內部電腦無法連外,造成無法使用yum下載更新,這時有兩種作法
1. 自行架設yum server
2. 指定yum連結光碟片
 2.1. 建立 local.repo檔案
 2.2. 在檔案中打入以下資訊
       [LocalRepo]
       name=Local Repository
       baseurl=file:///media/cdrom
                    file:///media/centos7
       enabled=1
       gpgcheck=1
       gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
註1:路徑可以自行設定
註2:如果要光碟中的rpm檔放到硬碟中,只需要將 /Packages 及 /repodata放入即可
3. 臨時手動透過光碟片安裝 指定使用 LocalRepo 安裝
指令:yum --disablerepo=* --enablerepo=LocalRepo install mailx
補充:這個方式只是關閉其他的 Repository,指定使用 LocalRepo,並示臨時使用光碟安裝

相關資料:
符碼記憶
http://www.ewdna.com/2014/03/yum-install-via-dvdrom-repository.html

國外大大RAJ文章
http://www.itzgeek.com/how-tos/linux/centos-how-tos/create-local-yum-repository-on-centos-7-rhel-7-using-dvd.html#axzz3TJRbP2i1


13. curl 指令

這個指令與wget相似,也是可以透過網址就可以下載rpm檔,這個指令在CentOS 7 中預設會加裝進去哦!

範例:
curl -O ftp:/******/RPMS/yumi-2.0.7-2.el6.rf.noarch.rpm <== 某網址下載yumi
註:一定要加 -O才能使用網址啊


14. test 指令

鳥哥
第十三章、學習 Shell Scripts
http://linux.vbird.org/linux_basic/0340bashshell-scripts.php


15. 指令後使用&做背景執行的問題

如果該指令在執行後,會持續執行的,使用&背景執行是OK的,但如果該程式執行後,會自動完成,請不要使用&,會造成程式不會自動完成


16. man 指令

towns想查看詳細說明時,都會使用man [指令],在說明文件中都會有see also......如crontab(5),cron(8),這表示還可以參考crontab第5個說明檔及cron第8個說明檔,說真的towns不知道怎麼選第5個 = =||,所以寫一下man 指令使用方式

man -f crontab ==> 列出 crontab 相關說明文件
man crontab ==> 列出 crontab(1) 文件內容
man 5 crontab ==> 列出 crontab(5) 文件內容
man -k cron ==> 列出有 cron 關鍵字的說明文件
man -aw passwd ==> 列出 passwd 有哪些章節
man -a passwd ==> 查看 passwd 所有章節
man -Hfirefox passwd ==> 使用 Firefox 查看 passwd 文件
man -P more passwd ==> 使用 more 分頁程式查看 passwd 文件

參考資料:

鳥哥 第五章

G. T. Wang 大大的文章
Man Page 應用
http://blogger.gtwang.org/2013/03/unixlinux-man-page.html
http://blog.gtwang.org/linux/linux-man-page-command-examples/

天藍工作室 -- 關於 man page 存放方式
http://itzone.hk/article/article.php?aid=200407152225014657

補充1:CentOS 7.2,man page 路徑為 /usr/share/man/
補充2:在這裡可以看到所有的路徑及語言


17. Linux 連接3G網路

方式一:使用3G網卡撥接
1. 抓取3G網卡。台灣的3G網卡,大多數都是內建驅動程式。在接上設備後,會出現安裝軟體(USB Storage),而Linux在抓取時,有時就會出現錯誤了,所以必需安裝usb_modeswitch來抓取3G網卡
安裝 usb_modeswitch。
這個套件在CentOS 7,已經內建了,以下版本是沒有內建的,rpmforge到是有
註1:安裝套件包含usb_modeswitch、usb_modeswitch-data(各家3G網卡驅動程式)、libusb
註2:如果內建的驅動程式有該硬體,系統就能自動抓取3G網卡,否則就得使用tcl套件來手動設定3G網卡

2. 設定撥接。在台灣,使用3G網卡的撥接電話,好像都是*99#

方式二:使用手機連接USB,用網路橋接方式
這個方式就非常簡單了,在CentOS7中,只要有安裝NetworkManager套件(NetworkManager-glib、NetworkManager-tui、NetworkManager)系統就能動態的抓到手機的USB網卡,並且可以上網了。當然,這樣的方式towns並無法瞭解其介接手機網卡的方式,有空再研究了

資料來源:
麥克星球大的blog
http://blog.xuite.net/michaelr/linux/14153877-%5BFC6%5DHuawei%20E612%20%E5%9C%A8linux%E7%92%B0%E5%A2%83%E4%B8%8B3G%E4%B8%8A%E7%B6%B2

艾鍗學院 blog討論
http://sites.powercam.cc/board.php?courseID=143&f=forum&tid=5562

Jason大的文章 -- USB_ModeSwitch說明教學
http://www.cnblogs.com/jasonliu/archive/2011/11/09/2242070.html

國外大大的文章(看來有點像是套件的作者)
http://www.draisberghof.de/usb_modeswitch/

start area -- 架設ppp
http://www.study-area.org/linux/servers/linux_ppp.ht

鳥哥 -- 第四章、連上 Internet

使用USB連接手機上網 -- kevin830406大說明
http://apk.tw/thread-482679-1-1.html

電腦分析室
http://softwarecenter.pixnet.net/blog/post/55942893-%E6%89%8B%E6%A9%9Fusb%E6%95%B8%E6%93%9A%E9%80%A3%E7%B7%9A%E5%88%86%E4%BA%AB%E7%B6%B2%E8%B7%AF%E7%B5%A6%E9%9B%BB%E8%85%A6


18. yum 說明

第一次使用yum一定要連上網路,系統需要更新預設的Base、Debuginfo、Sources、Vault的mirrorlist清單,如果沒有網路有兩種處理方式 1. 手動安裝、2. 暫時移除Base、Debuginfo、Sources、Vault的repo檔,等到網路通了再放回

指令
yum install [套件名1] [套件名2]..... or [完整網址]
yum update [套件名1]
yum upgrade [套件名1]
yum search [套件名1]
yum repoinfo <== 查詢已安裝的repo資訊
yum list ==> 列出所有可用的RPM檔
yum list installed ==> 列出所有已安裝的RPM檔
yum localinstall [RPM檔路徑1] ==> 安裝指定的RPM檔,在無網路的情形下,這是個好方法哦!
yum localupdate [RPM檔路徑1]
yum group list ==> 列出已群組套件的群組名稱
註:這個看起來很像是使用光碟片安裝時,所出現的套件群組名稱
yum group install "Development Tools" ==> 安裝所有開發工具
yum clean expire-cache ==> 清除到期的快取
yum clean packages ==> 清除已下載的套件
yum clean headers ==> 清除所有的表頭檔(清除表頭紀錄)
yum clean metadata ==> 清除 metadata 快取
yum clean dbcache ==>
yum clean rpmdb ==> 
yum clean plugins ==> 
yum clean all ==> 清除全部快取
yum makecache ==> 更新 metadata 快取
yum check ==>
yum help clean
yum help install
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm ==> 直接抓取 remi 的套件安裝
yum repolist => 列出本機有的 repo
yum --disablerepo=[repo name] update => 暫時停用指定的 repo 進行更新
yum-config-manager --disable [repo name] => 永久停用指定 repo 
yum autoremove => 清除已不需要的套件
yum provides nslookup => 查詢 nslookup 由哪個套件提供

--------------------------------------------------------------------------------------------

yum 的額外工具 -- yum-utils

package-cleanup --oldkernels --count=2 <== 清除舊核心資料,保留2個

參考資料:
man yum

nixCraft 大的 blog
http://www.cyberciti.biz/faq/centos-rhel-7-redhat-linux-install-gcc-compiler-development-tools/

Vixual 大的 blog
http://www.vixual.net/blog/archives/101

sk 大文章
https://www.unixmen.com/enable-disable-repositories-centos/


19. 掛載指令說明

很多關於掛載指令的詳細說明

GTW某大說明文件
http://www.gtwang.org/2013/01/linux-mount.html


20. 開放sudo權限

輪到towns要來設定sudo了 ^^",使用者使用該指令後,有效時間為5分鐘

在etc/sudoers中加入這一行,表示該使用者可以使用自己的密碼來執行root權限
[使用者帳號]    ALL=(ALL)       ALL

資料來源:
鳥哥 第十四章、Linux 帳號管理與 ACL 權限設定
wiki
http://zh.wikipedia.org/wiki/sudo


21. 子網卡設定

臨時設定
建立子網卡語法:ifconfig [device] [ IP ] netmask [netmask ip] [up|down]
ifconfig eth0:0 192.168.1.101 netmask 255.255.255.0 up <== 建立eth0:0子網卡,並啟用
ifconfig down eth0:0 <== 停止子網卡

永久設定
vim ifcfg-eth0:0 <== 建立網卡檔案
檔案內容
DEVICE=eth0:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.101
NETMASK=255.255.255.0
註:臨時設定可以在CentOS7中正常使用,但永久設定則無法在CentOS7中正常使用


22. Linux傳真伺服器架設教學

在windows(XP以上有內建)之下要架設雙向Fax server真的是非常容易,不過在Linux的text mode就有些難度了,不過,pajace2001大給了詳細的回應呢!
啊呀!這個功能無法在VirtualBox下面測試呢!因為無法加裝數據卡 ^^,除非使用Com並連接數據機
資料來源:iT邦幫忙 -- pajace2001大的回應
http://ithelp.ithome.com.tw/question/10025396 


23. Text mode的流量監控套件 -- iftop

這個到是挺方便的,又好用的套件

資料來源:
G.T. Wang大的文章 -- 教學
http://www.gtwang.org/2012/10/iftop-linux.html


24. 將MySQL的log資訊寫入Syslog中,並建立即時監看功能

資料來源:
吳惠麟 前輩的文章
http://www.netadmin.com.tw/article_content.aspx?sn=1501080004&jump=1


25. pecl(pear)指令

這也是一個下載的指令,不過,他需要先安裝 php-pear 套件才能使用。
行為:
1. 連到官網下載指定套件(tar檔)
2. 執行解壓、./configure、make、make install
3. 提醒註意事項

這是一個php程式更新的方便工具,如果系統是用來開發php程式,建議一定要裝這個套件以便簡化安裝流程及取得最新套件

官網網址:https://pecl.php.net/package

補充1:安裝 php-pear 套件,需先安裝 php-process
補充2:還需要安裝 gcc pecl 才能幫我們裝 tar 檔哦!

使用範例
pecl install oci8 <== 從伺服器中安裝最新版本的oci8 tar檔
pecl list oci8 <== 列出oci8套件的檔案及安裝位置
pecl list <== 列出本機 pecl 安裝的套件
pecl list-all <==
pecl install ./oci8-2.0.6.tgz <== 安裝本機該路徑中的oci8-2.0.6.tgz檔案
pecl upgrade ./oci8-2.1.0.tgz <== 更新本機該路徑中的oci8-2.0.6.tgz檔案
pecl install gnupg-1.3.2 <== 從伺服器中安裝指定版本的 gnupg tar檔
pecl help list <== list 參數說明
pecl remote-info oci8 <== 列出遠端伺服器 oci8 套件資訊
pecl remote-list <== 列出遠端伺服器(pecl.php.net)中所有套件

相關資料:
ireader -- pear 與 pecl 的差別
https://www.itread01.com/content/1548664950.html


26. 安裝 Oracle Instant Client 流程

安裝這個套件,主要是要提供PHP連接Oracle資料庫使用
1. 確認PHP版本及是否已安裝以下套件
php-opcache、php-process、php-devel、php-common、php-cli、php-mcrypt、php-mysql、php-snmp、php-pear、php-pdo、php、php-mbstring、php-xml、httpd-devel

2. 依照官方說明文件安裝oracle-instantclient12.1-basic及oracle-instantclient12.1-devel rpm檔,這需要到官網下載

3. 安裝php套件oci8
可以使用perl安裝或至php官網下載oci*.tgz檔
官網:https://pecl.php.net/package/oci8
註1:使用perl安完成後,系統會提醒需要自定extension=oci8.so到php.ini中。
註2:確認/usr/lib64/php/modules/oci8.so 檔案是否存在
註3:我們可以依新版的PHP,建立oci8.ini檔並將modules寫入該檔中

4. 重新啟動apache

資料來源:Oracle官網
http://www.oracle.com/technetwork/articles/dsl/technote-php-instant-12c-2088811.html


27. 卸載光碟機

towns在使用X-win時,可以看到光碟機直接卸離或隨身碟卸離時,硬體會消失,但使用指令umount卻辦不到,原來卸離並不是使用umount,而是使用eject指令,會將設備完整卸離。早期為用於卸離掛載的FS,但也可以用來完整移除設備(如光碟機、USB隨身碟等等…)

eject -r ==> 卸離光碟機
eject /dev/cdrom ==> 卸離光碟機
eject -d ==> 顯示預設裝置
eject -s ==> 卸離SCSI設備
eject -f ==> 卸離軟碟
eject sdb ==> 卸離sdb磁區(如USB隨身碟)。注意,要先umount

註:有時使用 -r 無法順利卸離光碟機,可以使用第二方式

資料來源:Chenxing大的文章
http://linux-wiki.cn/wiki/zh-tw/%E5%AE%89%E5%85%A8%E7%A7%BB%E9%99%A4USB%E8%AE%BE%E5%A4%87


28. tcpping

CentOS 6 ==> 需額外安裝tcptraceroute套件
CentOS 7 ==> 安裝 traceroute套件後,就有tcptraceroute這個指令了


 29. Linux 效能監控工具 -- sysstat

參考資料:傲笑紅塵路大的文章
http://www.lijyyh.com/2012/01/linux.html


30. 指令 uname

這個指令蠻常用的,他可以提供如核心資料、主機資料等等,不過並沒有提供硬體詳細資料哦

uname -a ==> 列出所有資料。用CentOS 7 舉例
Linux centos7-local 3.10.0-123.e17.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
kernel name(-s)| network node hostname(-n)| kernel release(-r)| kernel version(-v)| machine hardware name(-m)| processsor type(-p)| hardware platform(-i)| operating system(-o)

核心名稱 | 主機名稱 | 核心版本 | 核心釋出時間 | 硬體支援 | CPU型態 | 硬體平台版本 | OS版本


30. wkhtmltopdf -- 將網頁直接轉成PDF檔

安裝方式
直接到官網下載 wkhtmltox
yum install wkhtmltox-0.12.2.1_linux-centos7-amd64.rpm

測試
/usr/local/bin/wkhtmltopdf ./test.html ./index.pdf
有出現檔案就完成了

註1:套件相依性 xorg-x11-fonts-75dpi
註2:也可以轉純文字檔

資料來源:官網
http://wkhtmltopdf.org/index.html


31. 手動擴充swap空間

1. 使用dd指令產生映象檔(512MB)
dd if=/dev/zero of=/tmp/swap bs=1M count=512
2. 格式化為swap
mkswap /tmp/swap
3. 掛上swap
swapon /tmp/swap
4. 確認是否掛上
free
swapon -s
註:在CentOS 7 中會提醒管理人,將該檔案的權限由644改為600
5. 關掉掛上的swap
swapoff /tmp/swap

補充:如果要開機掛載,需要寫入 /etc/init.d/rc.local 或 寫入 /etc/fstab

資料來源:鳥哥 第八章 Linux硬碟與檔案系統管理


32. locale -- 語系查詢

locale -a <== 顯示系統支援的所有語系
locale <== 顯示目前系統所用的語系
locale -m <== 顯示支援字體

參考資料:鳥哥 第一十章 認識與學習 BASH


33. ip 指令

ip這個指令是最原始的指令,有不少網路相關指令是由他產生的,如ifconfig、route、ifup、ifdown等等,列一下towns要用的指令
這個指令非常不易使用,難怪要有這麼多的附加指令來運用

ip addr:協定(IP or IPv6)綁定裝置
ip addr show <== 查閱IP,這個會連子網卡的IP一起秀出來(同ip add )
ip addr add 192.168.56.91/24 broadcast + dev eth0 label eth0:0 <== 建立eth0:0子網卡,與使用ifconfig建立相同哦!
ip addr change 192.168.56.92/24 broadcast + dev eth0 label eth0:0 <== 修改eth0:0子網卡
ip addr del 192.168.56.91/24 dev eth0:0 <== 刪除子網卡eth0:0

ip link:連接、設定網路裝置
ip link set eth0 down/up <== 關閉/啟用eth0 介面連結

ip route:路由表管理與設定
ip route show <== 顯示目前路由表(route -n)
ip route add 192.168.56.0/24 dev eth0 <== 在eth0 中加入免路由另一網段(route add -net)
ip route del 192.168.56.0/24 dev eth0 <== 在eth0 中刪除此網段(route del -net)
ip route add 192.168.57.0/24 via 192.168.57.1 dev eth0 <== 設定靜態路由(route add -net)
ip route add default via 192.168.1.254 dev eth0 <== 設定預設路由(route add default gw)

ip neighbour:ARP或NDISC 快取設定與管理
ip neigh show
ip neigh flush 192.168.56.101 <==更新指定IP的ARP(MAC)資訊
ip neigh flush 192.168.0.0/24 <== 更新指定網段的ARP(MAC)資訊
ip neigh flush all <== 更新全部ARP(MAC)資訊

ip monitor:網路監控(類似tcpdump 的功能)
ip monitor <== 全部監控
ip monitor neigh <== 監控 ARP 封包的存取情形


34. chkconfig 指令

towns非常常用,但都沒有懂過原理 ^^",但CentOS7,都快要將他停用了 ^^"
目前CentOS7只會列出SysV服務,而xinetd的服務已經改由systemctl 統一管理

chkconfig --list <== 列出所有服務
chkconfig --del [服務名稱] <== 刪除服務,該服務會從list中刪除
chkconfig --add [服務名稱] <== 加入服務,該服務名稱必需在 /etc/init.d/ 中
chkconfig [服務名稱] off  <== 關閉所有層級啟動
chkconfig [服務名稱] on <== 開啟2 3 4 5 層級的啟動

補充:CentOS7已經將大多數的服務移到 /usr/lib/systemd/system/,如果要設定開機啟動,則會將該路徑中的指定服務(如httpd.service當案)做一個link到/etc/systemd/system/multi-user.target.want/ 這個路徑,有點像OS X系統的做法。只是怎麼做,怎麼區別那個層級才啟動呢?

參考資料:鳥哥 十八、二十章


35. 使用 X-win 安裝rpm套件(3-3.8)

使用X-win 安裝 rpm 檔,系統會自動安裝相依性套件。towns覺得,在新版的X-win應該已經都有這些功能了


36. 檢查磁碟分割區的檔案系統

parted /dev/sda 'print'

參考資料:ctw大文章
http://blogger.gtwang.org/2014/05/linux-fsck-examples.html


37. ARP指令

突然有需要了 ^^
arp <== 立即檢查ARP表(系統會發出ARP封包,並取得最新資訊)
arp -e <== 查看本機ARP快取資訊
arp -n <== 立即檢查ARP表(系統會發出ARP封包,以IP表示)
arp -i eth0 -s 192.168.56.101 08:00:27:7c:3b:ff <== 手動加入arp資料(Flags Mask會寫CM)
arp -d hostname <== 手動刪除指定快取(依名稱)
arp -d 192.168.56.101 <== 手動刪除指定快取(依IP)
arp -i eth1 -d 192.168.56.101 <== 手動刪除指定介面快取
ip neigh flush 192.168.56.101 <==更新指定IP的ARP(MAC)資訊
ip neigh flush 192.168.0.0/24 <== 更新指定網段的ARP(MAC)資訊
ip neigh flush all <== 更新全部ARP(MAC)資訊

補充:arp快取資訊寫在 /proc/net/arp 這個檔案中

參考資料:
IT研究室
http://jaychu649.blogspot.tw/2015/06/arp-cache-clear-arp-entries-from.html
man arp


38. tcpdump 指令

在 windows 最常用於截取封包的軟體莫過於 Wireshark ,這套軟體,而在Linux下呢?大概就是tcpdump吧!
1. 安裝套件:在光碟中就有tcpdump這個套件了,也可以用yum直接安裝
2. 指令說明
tcpdump <== 監聽eth0介面所有封包
tcpdump -i eth1 <== 監聽eth1介面所有封包
tcpdump -i eth1 -P in(out) <== 監聽eth1介面接收(送出)的封包
tcpdump -i eth1 -n <== 監聽eth1介面所有封包,以IP表示
tcpdump -i eth1 -nn <== 監聽eth1介面所有封包,以IP及port表示
tcpdump -i eth1 -N <== 監聽eth1介面所有封包,顯示第一節(或說不顯示網域名稱)
tcpdump arp <== 監聽eth0介面arp封包
tcpdump -i eth1 host 192.168.56.10 <== 監聽由eth0介面來的 192.16.56.10 封包
tcpdump host 192.168.56.10 or host 192.168.1.20 <== 同時監聽 192.16.56.10 及 192.168.1.20 封包

參考資料:CSDN 討論 hollofans_love 的詢問 -- 時監聽多個 IP 來源封包
https://bbs.csdn.net/topics/340143998


39. route 指令

路由表指令

route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
將192.168.1.0/24 走eth0介面這個 subnet 路由資訊寫入路由表
route add -net 192.168.1.0 gw 192.168.1.1 netmask 255.255.255.0 dev eth0
將192.168.1.0/24 閘道為192.168.1.1 走eth0介面這個路由資訊寫入路由表
補充:上面這兩條順序不能改,因為如果沒有192.168.1.0/24 這個 subnet,這個192.168.1.1 不應該存在。如果先寫第二行,會出現 Network is unreachable 這個錯誤
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.254
將192.168.1.0/24 走192.168.1.254 匣道,這個 subnet 路由資訊寫入路由表

route add -host 192.168.1.10 dev eth0
加入主機走eth0介面
註:設定主機,不能加netmask,系統會自動使用 32的遮罩

route del default ==> 刪除預設閘道
route add default gw 10.0.2.2 ==> 設定10.0.2.2為預設閘道
route add -net 10.0.0.0 netmask 255.0.0.0 reject <== 拒絕路由 10.0.0.0/8 的封包

routef ==> 更新IPv4的 routing table
補充:使用了這個指令,會將VBX中的 default 刪除,造成網路不通
routel ==> 列出更詳細的路由資料

補充1:如果靜態路由要開機就寫入,需要將路由資訊寫到 /etc/sysconfig/network-scripts/route-[網卡名]中,如192.168.20.0/24 via 192.168.1.1 dev eth0
補充2:192.168.1.0/24 via 192.168.2.254 metric 0,這個設指定IP閘道方式

參考資料
start area -- IP Routing
man route
鳥哥 第八章、路由觀念與路由器設定


40. vsftp 設定問題(3.0.2)

1. 鎖定使者只能讀取自己的家目錄

在vsftp 3.0版以前,鎖定使者只能讀取自己的家目錄,只需設定 chroot_local_user=YES,在3.0版之後,必需加上allow_writeable_chroot=YES,這時就能正常存取家目錄了

2. 在3.0 版後,如果要設定為 standalone 模式(listen=YES),IPv6 監聽則必需關閉(listen_ipv6=NO),否則會無法啟動 vsFTP。如果要兩個同時監聽,listen=NO、listen_ipv6=YES

參考資料:
鳥哥的Linux私房菜 -- 第二十一章、檔案伺服器之三:FTP 伺服器
就愛新鮮物 -- 關於refusing to run with writable root inside chroot()目題處理
http://ifresh.cc/solution-to-vsftpd-refusing-to-run-with-writable-root-inside-chroot


41.  DF指令

df常用於查看各分區的空間、內量、使用情形,也可以用來查看該分區FS的格式哦!

df -- 查看個分區使用情形
df -h -- 查看個份區使用情形,以MB、GB表示方式
df -Th -- 查看個份區使用情形,以MB、GB表示方式,並顯示FS 類型

參考資料:
鳥哥 -- 第七章、Linux磁碟與檔案系統管理


42. traceroute 指令

這個指令蠻常使用的,通常用來確認那個路由掛了,還有一些參數可以使用,towns來補一下資料
這個指令也可以用來學習TCP/IP封包表頭資訊的變更與確認

traceroute tw.yahoo.com <== 測試經過的路由器數量,並提供回應時間
traceroute -I -m 2 192.168.56.101 <== 使用 ICMP 協定,並只用兩個躍點(TTL = 2)
traceroute -T -m 2 192.168.56.101 <== 使用 TCP 協定,並只用兩個躍點(TTL = 2)
traceroute -F -m 2 192.168.56.101 <== 封包不能分割,只兩用個躍點(TTL = 2)
traceroute -f 2 -m 2 192.168.56.101 <== 設定由第二個躍點開始,只兩用個躍點(TTL = 2)
traceroute -g 192.168.56.2 192.168.56.101 <== 指定來源閘道為192.168.56.2(未測試)
traceroute -i eth1 2 192.168.56.101 <== 由介面1(eht1)送出
traceroute -N 2 192.168.56.101 <== 同時送出兩個封包
traceroute -n 192.168.56.101 <== 不反查路由器的名稱
traceroute -P 2000 192.168.56.101 <== 連接 port 由2000開始
traceroute -t 16 192.168.56.101 <== 修改IP表頭的TOS 類型為Delay
traceroute -w 10 192.168.56.101 <== 修改等待回應時間為10秒(預設為5秒)
traceroute -q 1 192.168.56.101 <== 修改每一個節點的發封包數為1(預設為3個)
traceroute -z 1000 192.168.56.101 <== 修改封包發送間隔1秒(預設為0秒)
traceroute --sport=2000 192.168.56.101 <== 修改 source port 為2000,使用後回應速度會變慢(預設為隨機)
traceruote -T -O help <== 列出 TCP 協定中,options欄位可寫入的資料
traceroute -T -O ack 192.168.56.101 <== 使用TCP 協定,並將旗標(flag值)設為ack
traceroute -U 192.168.56.101 <== 使用UDP 協定,並使用53 port
traceroute -P 1 192.168.56.101 <== 修改IP 表頭中的protocol欄位的值。1為ICMP
traceroute 192.168.56.101 --mtu <== 丟出一個65000 byte的封包,查看能訊框(Fram)傳送的最大值(一般為 1500 bytes)。僅能用於ICMP及UDP,且不能帶 i 參數

補充0:使用traceroute,會自動反解名稱,如果該對應的名稱同時有IPv4及v6 IP,預設會找IPv4
補充1:traceroute 預設使用 UDP 協定,並預設TTL為30
補充2:tcptraceroute = traceroute -T = tracroute -M tcp
補充3:F 表示設定IP 標頭時,Flag資訊設為 010(0x02;封包不可分割),該參數不適用於IPv6,因為6版一定會分割封包
補充4:f 躍點起點,如果設為2,預設30個躍點會變成29個
補充5:每一個值(或*)會送出一個封包。如果不到30個躍點,會提前結束
補充6:N 參數會改變一次送出的封包數。預設一次送出16個封包
補充7:P 參數會改變連接Port的起點。TCP 預設使用80 Port,UDP 則預設使用33434 Port
補充8:t 參數會改變IP 表頭中的TOS 類型(Wireshark表示為 Differentiated Services Field)。可用10進位(16)或16進位(0x10)寫法。在IPv6為修改Traffic Class值
補充9:l 參數會改變IPv6 表頭中的Flow Label 值
補充10:s 參數為設定來源IP。預設使用送出介面所綁定的IP
補充11:A 參數會顯示出路由終點的資訊(如反解資訊),而非經過的路由器資訊
補充12:O 參數可以修改Options值。
補充13:Option 只有TCP 及ICMP 有。TCP 用於修改旗標(Flag),ICMP 只有兩種(raw | dgram)
補充14:P 參數會修改IP 表頭中protocol欄位的值,用數字表示。對應數字可看 /etc/protocols 檔
補充15:使用 -- mtu 參數,雖可用於UDP,但事實上,還是使用ICMP 來回應資料

參考資料:
start area -- ICMP 協定
traceroute 說明


43. ping6 指令

這個很明顯,就是用來ping  IPv6 的IP 啦!

ping6 -I eth1 -c 3 fe80::10aa:d1ce:c4e8:a10c

參考資料:Gulin大的blog
http://gugu0928.blogsport.tw/2011/05/linux-ipv6-ping.html


44. hping3 指令(轉移到專文中)


45. FTP 主動(Active)與被動(Passive)模式

主動模式:由Client 端提供資料傳送連接埠資訊,且Server 端由20埠發出連線請求
被動模式:由Server 端提供資料傳送接埠資訊,Client 傳送資料時,就請求使用這連接埠
使用被動模式時當Server 端在防火牆中,Client 在防火牆中時,都可正常連線
使用主動模式時當Client 在防火牆中,都會因為請求額外連接埠而造成無法連線的問題

註1:當連接FTP 產生檔案列表時,也會發生這種情形,所以在防火牆下使用 Active 模式,會發生無法列表的情形
註2:使用主動模式在Server 端傳送資料失敗時,Client 端會再提供一組+1的序號,請Server 端使用新的連接埠與Client 連接,這也說明,在主動模式下,Client 端所開啟的資料傳送Port 會一直改變

參考資料:保哥
http://blog.miniasp.com/post/2008/06/29/FTP-Protocol-Definitive-Explanation.aspx


46. CentOS 7 安裝 wireshark

直接透過 yum 就可以安裝了,不過,安裝wirshark,就是要圖型介面嘛!要加裝wireshark-gnome套件

補充1:在GUI 介面下使用wireshark 圖型介面,需要有root 權限。使用root gui 開啟或使用terminal 變更為root 再執行wireshark 指令
補充2:在CentOS 7中,wireshark可以抓取的介面,不只有網路卡,連USB都可以抓到 WOW
補充3:中文介面,會造成wireshark 下面16位元跑位,建議使用英文介面


47. 開啟Linux 路由功能

towns使用虛擬機直接測試開放路由功能,並設兩個子網路(192.168.1.0/24,192.168.56.0/24),沒想到不需要做設定就通了

臨時開放路由功能:echo 1 > /proc/sys/net/ipv4/ip_forward
開放路由功能:將 net.ipv4.ip_forward = 1,寫入 /etc/sysctl.conf 中 並使用 sysctl -p 指令讓設定立即生效

參考資料:
鳥哥 第八章、路由觀念與路由器設定


48. 重新抓取 DHCP 資料

1. ip addr flush dev eth0
2. dhclient -r
3. 刪除 /var/lib/dhclient.leaseas,再重抓 dhclient eth0

補充:當發生了 RTNETLINK answers: File exists 時,試試以上方式處理。可能與變更主機名稱有關

參考資料:
StackExchange 討論
http://unix.stackexchange.com/questions/100588/using-ip-addr-instead-of-ifconfig-reports-rtnetlink-answers-file-exists-on-de

http://serverfault.com/questions/601450/dhclient-what-does-rtnetlink-answers-file-exists-mean


49. CentOS 7.1.1503(Kernel 3.10.0-229.14.1.el7.x86_64v),不支援 Intel Core i5-5200U的CPU

CentOS 7 base on Fedora 19,而Fedora 19 發布時間為2013年7月,而i5-5200U,是在2015年第一季發表的,所以Kernel 還未支援,也許 Fedora 22 版,就有支援哦!(未測試)

參考資料:
小雨大口述
wiki -- fedora
https://zh.wikipedia.org/wiki/Fedora


50. ss 指令

依Centos 7中文wiki中說明,ifconfig、netstat 已經是10年前使用了,現在的主流是使用ip及ss,救人哦! = = 來學學吧!

netstat 常用參數,ss 似乎都是可以用的,只是ss 更廣


51. Linux 指定的危險用法

參考資料:G.T. WANG 大的blog
http://blog.gtwang.org/linux/most-dangerous-commands-you-should-never-execute-on-linux/


52. 清空檔案指令

> [檔名]

參考資料:G.T. WANG 大的blog
http://blog.gtwang.org/linux/most-dangerous-commands-you-should-never-execute-on-linux/


53. 字型設定相關(CentOS 7)

在某些情形需要中文字型(如程式中需匯出PDF 檔),這時,就得安裝中文字型了,參考鳥哥的資料來寫一些心得
1. 字型路徑 /usr/share/fonts/,X-win 字型連結路徑 /etc/X11/fontpath.d/
2. 中文楷書字型檔 cjkuni-ukai-fonts
3. 直接使用 yum 安裝後,字型即可使用
4. 安裝後在 /usr/share/fonts/ 中會多出 cjkuni-ukai,這個路徑
常用指令
fc-cache -v |grep ukai <== 查看中文楷書字型是否取用了,列出有4種
fc-list |grep jkai <== 查看中文楷書字型是否取用了,列出哪4種
fc-cache -f -v <== 列出,並強制重新建立字型快取
自行加入字型(以鳥哥說明為例)
1. 在 /usr/share/fonts/ 新增資料匣 windows
2. 將 ttf 檔放到上面的資料匣中(ttf 檔可由 windows 中的字型檔取得)
3. 使用指令 fc-cache -f -v 強制重新建立字型快取
4. 在 X-win 的字型檢視器中,就會出現放入的字型了

參考資料:
鳥哥 第二十三章 X Window 設定介紹

賴大的文章 -- CentOS 5、6 支援顯示中文方式方式
http://lzrong.pixnet.net/blog/post/4188817-%E8%8B%B1%E6%96%87centos%E9%A1%AF%E7%A4%BA%E4%B8%AD%E6%96%87%E5%AD%97%E5%9E%8B%E6%96%B9%E6%B3%95


54. ps 指令

這個指令用了很久了呢!到現在才來紀錄

ps aux <== 觀察系統所有程序(a 列出所有無終端的程序,u 列出執行者,x 列出無終端的程序)
ps axw <== 觀察系統所有程序(w 列出完整指令及參數)
VSZ:該程序用掉的虛擬記憶體量
RSS:該程序用掉的實體記憶體量
START:該程序被觸發啟動的時間

ps -l <== 觀察自己的執行的程序
F(Process Flage)總結權限。
  常見 4:權限、1:子程序並無實際執行、0:已完成(結束)的程序
S(status)狀態。
  R(Running):運作中、S(Sleep):睡覺中,需要請叫我、D:等待執行中、T(stop):靜止中,可 能為工作控制(背景暫停)或除錯(traced)狀態、Z(Zombie):僵屍狀態,程序已終止但無法從記憶體中移除
UID(User ID):使用者ID
PID(Process ID):程序ID
PPID(Parent Process ID):父程序ID
C:CPU使用率
PRI(Priority):優先順序。核心設定程序,無法自行調整
NI(Nice):優先順序。使用者設定值,範圍為 -20~10
補充:新的程序優先順序為 PRI + NI
ADDR:該程序在記憶體中的位置。如果是執行中則為 -
SZ:該程序的記憶體使用量
WCHAN:該程序目前是否運作中。運作中為 -
TTY:登入者終端機位置,如果為遠端登入會出現 pts/(n)。console 則為tty(n)
TIME:CPU使用時間
CMD:就是指執行的執令

範例:
ps axjf <== 觀察系統所有程序並列出部分程序樹狀態
ps aux |grep 'Z' <== 查出殭屍程序
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head <== 列出需要欄位並依記憶體用量降冪排列

參考資料:
鳥哥 第十六章、程序管理與SELinux初探

G. T. Wang 大的文章 -- Linux 用 ps 與 top 指令找出最耗費 CPU 與記憶體資源的程式
https://blog.gtwang.org/linux/ps-top-find-processes-by-cpu-memory-usage/


55. lsblk 指令

這個指令在CentOS 6以上的版本就預設安裝了,是一個列出所有儲存裝置的方便指令。以往towns 常用fdisk -l /dev/sda,來查看磁碟資訊,這個指令更方便了 ^^

lsblk <== 以樹狀結構顯示本系統下所有磁碟與磁碟內的分割資訊
lsblk -d <== 僅列出磁碟機本身資訊
lsblk -f <== 以樹狀結構顯示本系統下所有磁碟與磁碟內的分割資訊,並加入TYPE、LABEL、UUID
lsblk -m <== 以樹狀結構顯示本系統下所有磁碟與磁碟內的分割資訊,並顯示裝置檔案權限
lsblk -p <== 以樹狀結構顯示本系統下所有磁碟與磁碟內的分割資訊,並顯示檔案完整路徑
lsblk -t <== 列出該磁碟裝置詳細資訊

補充:lsblk 所讀取的資料是 /sys/dev/block

參考資料:
鳥哥 第七章、Linux磁碟與檔案系統管理
lsblk 說明


56. df 與 du 的差別

du(Disk Usage):實際計算目前的檔案大小並統計
df(Disk Free):取出 statfs 資料(?)查看
當檔檔案被刪除後,使用du 可以看到實際使用量,但如果該檔案仍被程序使用中,則df 出現的資訊會與du 不同。所以如果要兩指令資料相同,需關閉佔用檔案的程序,讓df 資訊正確。如果找不到,重開系統可能比較快

參考資料:smstong大的文章
http://blog.csdn.net/smstong/article/details/8715650 


57. 長指令網站

towns 看過老師、書上常有出現長指令(一大串指令)來處理特定問題,如監控發信、監控統計等等,實在另towns 羨慕不已,可是 towns 只是個初級Linux 玩家,要寫這麼長串指令實在是有點難,不過,有一個外國網站專門給大家放上長指令呢!這個讚,非常試合Linux 管理者參考呢!

網站的右邊,是指令,可以點選找到需要的指令說明

網址:
http://www.commandlinefu.com/commands/browse

資料提供:小雨大

另一有用資料提供
http://linuxtools-rst.readthedocs.io/zh_CN/latest/base/index.html#

這個算是基礎教學,不過,在指令上,都是可以直接使用的

資料提供:heab 大


58. PAM 限制功能

這個功能在CentOS 6時就有了,不過,towns從來沒使用過,直到安裝Oracle DB 時才接觸到,功能很多呢!towns 來記錄一下

相關檔案 /etc/security/limits.conf
使用檔案設定,就是檔案本身就有完整的說明,而且操作上非常簡,下面為其中一例
towns       soft       nproc      20  <== towns帳號開啟程序20個以上發出警告
towns       hard      nproc      50  <== towns帳號開啟程序不可超過50個
towns       -           maxlogins  4  <== towns帳號只能連入4次
補充1:這個設定值設定後重新登入才會生效
補充2:相關記錄檔為 /var/log/secure

相關指令 ulimit
這個是臨時設定,只在登入時有用,登出或重開後就失效
ulimit -a <== 顯示目前所限制
ulimit -u <== 顯示使用者最大可開啟多少程序
ulimit -u 16384 <== 設定使用者最大可開啟多少程序
多數的參數值,在使用ulimit -a 後都會出現在列表中,這裡就不多列了

參考資料
鳥哥第十章 10.2.7 與檔案系統及程序的限制關係:ulimit
鳥哥第十三章 limits.conf
某大的文章 linux/unix ulimit 命令詳解
http://blog.itpub.net/22531473/viewspace-742736/ 


59. Linux 預先載入驅動程式

這個問題常發生在有Raid Card 的機器上面

1. 放入CentOS 光碟片 ==> 出現開機選單時,按下ESC ==> 出現 boot:
2. 打入 linux dd blacklist=ahci,等一下後,系統會列出抓到的裝置
3. 選指定定裝置,會出現驅動程式項目,選擇後就可以載入了

補充:如果要看在boot 下可用指令,請按tab 鍵

http://serverfault.com/questions/705295/raid1-drive-not-seen-by-centos-7-installer-on-hp-proliant-dl360e-gen8 


60. Linux 支援 exFAT(FAT64)檔案系統

安裝 exfat-utils、exfat-fuse

參考資料:
Magic Len 大的文章 -- 雖然是在說 Ubuntu,但應該也可用於其他系統
https://magiclen.org/ubuntu-exfat/ 


61. 指令 netstat

netstat -tncp ==> t(TCP)、n(數字顯示)、c(持續監控,每秒更新一次)、p(顯示PID及程式)
netstat -tulnp ==> t(TCP)、u(UDP)、l(顯示監聽中的資訊)、n(數字顯示)、p(顯示PID及程式)
netstat -tunp ==> t(TCP)、u(UDP)、n(數字顯示)、p(顯示PID及程式)及正在連線中的資訊
netstat -xlnp ==> x(顯示UNIX Sockets)、l(顯示監聽中的資訊)、n(數字顯示)、p(顯示PID及程式)

 


62. 強制登出使用者

1. 取得 root 權限
2. 確認要強制登出使用者的 tty
3. pkill -kill -t tty

註1:用w、who可以查到使用者的tty
註2:也可以使用 kill 刪除程序

參考資料:CaptainHana大的blog
https://captainhana.wordpress.com/2015/01/29/linux%E6%9F%A5%E5%87%BA%E6%89%80%E6%9C%89%E4%B8%8A%E7%B7%9A%E7%9A%84user%E5%BC%B7%E5%88%B6%E7%99%BB%E5%87%BAuser/

指令翻譯說明

pgrep -u root <== 列出所有程序中有 root 字眼的UID
pgrep -u root sshd <== 列出所有程序中有 root及sshd 字眼的UID
pgrep -u root,deamon <== 列出所有程序中有 root及deamon 字眼的UID


63. yum 安裝 RPM 套件後保留 RPM 檔案

yum 在預設的情形下,是不保留 RPM 檔的,如果要保留,要改 yum.conf 設定,將 keepcache 設為1

參考資料:胖虎大
http://idobest.pixnet.net/blog/post/24193794-%5B%E9%BB%9E%E8%A7%A3%5D-%E4%BF%9D%E5%AD%98-yum%E4%B8%8B%E8%BC%89%E7%9A%84rpm%E6%AA%94%E6%A1%88 


64. 指令 grep

非常常用的指令,不過,好像從來沒寫過說明
完整的資訊,一定要看過鳥哥的文章

dmesg | grep 'BIOS' <== 列出開機程序中有BIOS 的行
dmesg | grep -v 'BIOS' <== 列出開機程序中沒有BIOS 的行
dmesg | grep -n 'BIOS' <== 列出開機程序中有BIOS 的行,並顯示行數
dmesg | grep -A3 -B2 'BIOS' <== 列出開機程序中有BIOS 的行,且列出前三後二行
dmesg | grep -in 'BIOS' <== 列出開機程序中有BIOS 的行,並顯示行數,不論大小寫
grep -n 't[ea]st' regular_express.txt <== 列出檔案中有 test 或 tast 的行,並顯示行數
grep -n '[^g]oo' regular_express.txt <== 列出檔案中有 oo 的行,並忽略有 g 的行
grep -n '[^a-z]oo' regular_express.txt <== 列出檔案中有 oo 的行,並忽略有小寫a-z 的行
grep -n '[0-9]' regular_express.txt <== 列出檔案中有 數字 的行
grep -n '[^[:lower:]]oo' regular_express.txt <== 列出檔案中含oo,但不含小寫字母的行
grep -n '[[:digit:]]' regular_express.txt <== 列出檔案中含數字的行
grep -n '^the' regular_express.txt <== 列出檔案中行首含the 的行
grep -n '^[a-z]' regular_express.txt <== 列出檔案中行首含小寫字母 的行
grep -n '^[[:lower:]]' regular_express.txt <== 同上
grep -n '^[^a-zA-Z]' regular_express.txt <== 列出檔案中行首不含字母 的行
grep -n '.$' regular_express.txt <== 列出檔案中.為最後 的行
grep -n '^$' regular_express.txt <== 列出檔案中的空行
grep -n 'g..d' regular_express.txt <== 列出檔案中有g..d 四個字元 的行
grep -n 'ooo*' regular_express.txt <== 列出檔案中至少有兩個oo 的行
grep -n 'goo*g' regular_express.txt <== 列出檔案中頭尾為g 且中間至少有一個o 的行
grep -n 'g.*g' regular_express.txt <== 列出檔案中頭尾為g ,中間有字 的行
grep -n 'o{2}' regular_express.txt <== 列出檔案中有連續兩個 o 的行
grep -n 'o{2,5}g' regular_express.txt <== 列出檔案中有連續兩個 o 的行
grep -R 'test' ./ <== 列出本資料匣中所有文字檔案中有 test 的檔案
grep 1234 *regular* <== 列出檔名有 regular 的檔案中有 1234 的檔案
grep 1234 apache.conf <== 查詢 apache.conf 檔中是否有 1234 是否有這個字
ls |grep '[^0-9]$' <== 列出字尾不含數字的行
grep -v '^$' /etc/rsyslog.conf | grep -v '^#' <== 列出 rsyslog.conf 中無空白行及 # 的行

參考資料:
鳥哥 第十章、第十一章

史帝芬大的文章
https://sites.google.com/site/stevenattw/javascript-jquery/regular-expression

註1:^ 首行、$ 尾行、^the 首行為 the、the$ 尾行為 the
註2:[^a] 不含a 字元
註3:[ab] 含a 或 b 字元


65. cat 指令

這個也是超常用指令,不過,towns 通常只用到 cat [檔案] |less、grep 等等 ^^"。
與 grep 不同處,grep 可以處理 stdout 的資料,而 cat 只能處理檔案

cat -A [檔案] ==> 顯示所有資料。包含行尾的換行符號、行尾符號等等…
cat -n [檔案] ==> 顯示所有資料帶行號
cat -b [檔案] ==> 顯示資料帶行號,但不顯示空白行
cat -E [檔案] ==> 顯示所有資料及行尾
cat -s [檔案] ==> 顯示資料,重覆空白行則合併


66. 正規表示式

對一個不是程式出現的 towns 來說,正規表示式實在是不好學啊

RegExp ==> Regular Expression(正規表示式)

參考資料:
鳥哥 第十一章

ate大的文章
https://atedev.wordpress.com/2007/11/23/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%A4%BA%E5%BC%8F-regular-expression/

Larry Lu 大的文章 -- 正規表示式
http://larry850806.github.io/2016/06/23/regex/

PCRE ==> Perl Compatible Regular Expression(與 Perl 相容的正規表示式)


67. sed 指令

cat -n /etc/passwd |sed '2,5d' <== 列印行號並刪除2-5行
cat -n /etc/passwd |sed '2a drink tea' <== 於第二行後插入 drink tea
cat -n /etc/passwd |sed '2a drink tea or ......
>drink beer?'  <== 在第二行後加入兩行。每加一行就得用
cat -n /etc/passwd |sed '2,5c No 2-5 number' <== 取代 2-5 行文字
cat -n /etc/passwd |sed -n '2,5p' <== 顯示 2-5 行
ifconfig eth0 |grep 'inet[^6]' ==>
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
ifconfig eth0 |grep 'inet[^6]' |sed 's/^ *inet //g ==>
ifconfig eth0 |grep 'inet[^6]' |sed 's/^.*inet //g ==>
10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
ifconfig eth0 |grep 'inet[^6]' |sed 's/^ *inet //g |sed 's/ *netmask.*$//g' ==>
ifconfig eth0 |grep 'inet[^6]' |sed 's/^ *inet //g |sed 's/..netmask.*$//g' ==>
ifconfig eth0 |grep 'inet[^6]' |sed 's/^ *inet //g |sed 's/  netmask.*$//g' ==>
10.0.2.15

參考資料:
鳥哥 第十一章


68. patch 更新

towns 以前常看到 apache patch 更新,都看不懂也不明白,現在看了鳥哥 第十一章後,才知道何為 patch 更新(搞笑了,用了這麼久的Linux,現在才知道 ^^"),是指文字檔上的比對更新,也知道該如何更新及還原了

1. 產生 patch
通常是使用 diff 做新舊檔比對後產生的
diff -Naur test.old test.new > test.patch ==> 舊檔與新檔比對,並將差別寫入 patch 檔

2. 更新舊檔內容
patch -p0 < test.patch

3. 還原舊檔內容
patch -R -p0 < test.patch

註:p0是指同層目錄

參考資料:鳥哥 第十一章
http://linux.vbird.org/linux_basic/0330regularex.php


69. 指令 file -- 列出檔案詳細資料

用於確認檔案格式。與在 windows 中,於檔案上按滑鼠右鍵 ==> 詳細資料,所看到的內容類似

file [檔名] ==> 列出檔案詳細資料
文字檔(如txt),會出現編碼方式(如ISO-8859(big5))、斷行方式
圖形檔(如png),會列出像素、位元數等…
doc檔,列出詳細資料的所有資訊

鳥哥 第九章


70. 指令 iconv -- 語系編碼轉換工具

iconv --list <== 列出支援格式

iconv -f big5 -t utf8 vi.big5 -o vi.utf8 <== 原編碼,新編碼,檔名,產生新檔案

鳥哥 第九章


71. Steven 大的網頁 -- Steven's Linux Note

Steven 大有很多 Linux 的文章,很值得參考

http://www.l-penguin.idv.tw 


72. 開源互助社區

蠻多討論的,還不錯呢! ^^

http://www.coctec.com 


73. net-tools VS iproute2

雖然說 2001 年開始 Linux 社群已經對 Net-tools 已經停止維護了,但towns 一直想知道有什麼差別呢!邊查邊列吧!

1. 指令上的不同

2. 效率不同

參考資料:
Dan Nanni大的文章 -- 網路工具比較 net-tools VS iproute
http://xmodulo.com/linux-tcpip-networking-net-tools-iproute2.html
Dan Nanni 大的文章繁中翻譯版
http://read01.com/DDJa.html 


74. Network Service VS NetworkManager

這個也是 towns 想知道的差別,查到就來列吧!

1. 自動偵測與網路啟動

2. 管理上的差異

參考資料:
CentOS 討論 -- Network VS NetworkManager
https://www.centos.org/forums/viewtopic.php?f=50&t=47598 


75. top 指令

top <== 列出所有執行中程序資訊
top -o [欄位名] <== 依[欄位名]降冪排序
top -o %MEM <== 依記憶體使用量降冪排序
top -o %CPU <== 依CPU使用量降冪排序
top -o -%MEM <== 依記憶體使用量昇冪排序

參考資料:
阿舍大的blog
http://www.arthurtoday.com/2015/02/sort-cpu-and-memory-usage-with-top-command-in-ubuntu.html 


76. 螢幕關閉功能停用

setterm -powersave off -blank 0

參考資料:Tsukino Usagi 大的文章
https://usagiblog.wordpress.com/2007/12/13/disable_screen_auto_blanking_in_linux_console 


77. awk 指令

資料處理工具。與 sed 不同處,sed 處理行,awk 處理欄。看來towns 還是得來寫一下 ^0^

cat passwd |sed -n '1,5p' |awk '{print $1}'  <== 取出 passwd 前五行的第一欄
cat passwd |sed -n '1,5p' |awk '{print $1 "t" $2}'  <== 取出 passwd 前五行的第一、二欄並用tab隔開
cat passwd |sed -n '1,5p' |awk '{print $1 " " $3}'  <== 取出 passwd 前五行的第一、二欄並用空格隔開

參考資料:
鳥哥 第十一章


78. pecl install gnupg 問題

如果在 PHP7 下依照 PHP Documentation 的流程安裝 gnupg,會在 make 過程中發生問很多問題,目前 PHP 的工程師已經有在處理該問題了,等待修正吧!

官方於 20160615 出修正版了 1.4.0RC1,有支援 PHP 7,不過需手動設定 so 檔連結
gnupg.so 檔路徑 /usr/lib64/php/modules/

註1:towns 是到官網下載 gnupg 1.4.0RC1,並使用 pecl 進行本機端安裝
註2:在安裝完成後,pecl 會提醒設定方式

參考資料:官方
安裝流程說明
http://php.net/manual/en/gnupg.installation.php

bug 說明
https://bugs.php.net/bug.php?id=71138 

pecl 官網
https://pecl.php.net/


79. 指令 wc

常用於計數的指令

例:
cat /etc/passwd |grep towns |wc
1     1     46

行數、字數、字元數

參考資料:鳥哥 第十章 


80. 批次取得檔名方式

towns 需要批次轉檔且主檔名必需相同,要用 for 回圈啊!還好有大大們的協助

參考資料:
Jamyy's 大的文章 -- 完全符合 towns 的需求,只要小改一下即可
http://jamyy.us.to/blog/2009/02/433.html

某大的blog -- 用 shell 截取檔名
http://ephrain.pixnet.net/blog/post/58136247-[linux]-%E4%BD%BF%E7%94%A8-shell-%E6%88%AA%E5%8F%96%E6%AA%94%E6%A1%88%E7%9A%84%E6%AA%94%E5%90%8D%E8%88%87%E5%89%AF%E6%AA%94%E5%90%8D 


81. 關於 >/dev/null 2>&1 說明

這個常在 crontab 中出現呢!towns 不明白其意義,不過,孤島大有詳細說明
“> /dev/null 2>&1” 的意思, 是將左邊程式的所有標準輸出 stdout, 及標準錯誤輸出 stderr 導向到 /dev/null, 即左邊的程式只會執行, 而不會輸出任何程式執行的結果。

參考資料:
Sam Tang 大的blog
https://www.phpini.com/linux/dev-null-2-and-1-meanning

守望的編程珠璣 大的文章
https://kknews.cc/zh-tw/code/r3z2e3v.html

痞客興 大的文章
https://charleslin74.pixnet.net/blog/post/405455902


82. 指令 gdisk

早期使用 fdisk 管理、建立 MBR 磁碟,到 CentOS 7 後,使用 gdisk(GPT Fdisk),來管理建立 GPT 磁碟。不過,fdisk 也可以建立 GPT 磁碟哦!

常用範例
gdisk -l /dev/sda <== 列出硬碟資訊
gdisk /dev/sda <== 進入建置介面
進入介面後,就與 fdisk 很像了

補充1:如果使用 fdisk 建立的磁區,再使用 gdisk 查看,都會建議使用者將 MBR 轉為 GPT 格式
補充2:刪除 GPT 標簽

參考資料:鳥哥 第七章 


83. 關於 MBR、GPT、UEFI 文章

網管人 -- 黃明華先生文章
http://www.netadmin.com.tw/article_content.aspx?sn=1501070001&jump=1 


84. telnet

towns 常會使用 telnet 來測試指定 port 是否正常開啟,不過,如果發生 port 沒有正常開啟,常會出現一個訊息  請按 "^]" 跳出,不過,這是什麼,這是指 ctrl + ] 的組合鍵,使用後,就會跳回 telnet 的 command line 了


85. 指令 uptime(CentOS 7)

系統已開機時間。這個指令會告訴 towns 系統已經開機多久了,算是個常用指令呢!不過,towns 好像不常使用 ^^"

uptime <== 與 top 第一行資訊完全相同
17:35:25  up    7:15,    1 user,    load average:  0.00,  0.01,  0.05
現在時間 | 啟動 | 已開機時間 | 使用人數 | 1、5、15分鐘 系統負載情形

uptime -p <== 以美觀的方式顯時已開機時間
up  7  hours,  21 minutes

uptime -s <== 顯示系統何時開機的 


86. 在 X win 之下點執行檔兩下就可以執行

參考資料:stackexchange 討論
https://unix.stackexchange.com/questions/189777/how-to-launch-shell-script-with-double-click-in-centos-7 


87. yes 指令

這個指令在預設時,是一直丟出 y 這個文字,在需要連續打 y 非常實用

yes ==> y
yes n ==> n

資料來源:小雨大口述


88. nmap 使用

使用ping掃瞄子網路內的所有IP,並列出有回應的IP,不作進一步測試。
nmap -sP 192.168.56.0/24
nmap -sn 192.168.56.0/24

列出子網路所有IP及對應的主機名稱,但不作ping 及通訊埠偵測。
nmap -sL 192.168.56.0/24

偵測遠端主機已開啟的通訊埠,為縮短掃瞄時間,可指定特定的埠號,ex. -PS22,23,80,25
nmap -PS 192.168.56.234
nmap -p 1-200 192.168.56.234

使用UDP協定 ping 遠端的主機。
nmap -PU 192.168.56.0/24
nmap -PU 192.168.56.10

使用TCP SYN掃瞄,這是一個半開放的掃瞄方式,所以掃瞄速度較快,也比較常被使用。這可以列出有回應的遠端主機已開啟的網路服務埠。
nmap -sS 192.168.56.0/24

如無法以SYN掃瞄時,就得改用TCP connect 來掃瞄,這也是預設的掃瞄方式。
nmap -sT 192.168.56.0/24

用UDP協定掃瞄遠端主機群。
nmap -sU 192.168.56.0/24

掃瞄192.168.56.1 UDP 123 埠
nmap -sU -p 123 192.168.56.1

偵測遠端主機已開啟哪些通訊協定 TCP,UDP,ICMP,...
nmap -sO 192.168.56.19

偵測遠端主機的作業系統類型
nmap -O 192.168.56.19
nmap -A 192.168.56.19

掃瞄遠端主機,並列出相關詳細的資訊。
nmap -v scanme.nmap.org

以SYN秘密掃瞄網域為scanme.nmap.org所屬 C 子網段的所有存在的主機作業系統類型。
nmap -sS -O scanme.nmap.org/24

進行主機列表及TCP掃瞄特定網路服務,遠端主機的網路含括 198.116.(0-255).(1-127) 網段下。
nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127

隨機選擇100000台主機,偵測是否開啟 Web 服務,由於此掃瞄較耗時,所以加上-P0 不作主機列表。
nmap -v -iR 100000 -P0 -p 80

檢查 192.168.56.89 主機,3389 port SSL 所使用的加密方式
nmap -p 3389 -Pn --script +ssl-enum-ciphers 192.168.56.89 --script ssl-cert
nmap -p 3389 --script ssl-enum-ciphers ip_address
註1:nmap 測試 ciphers 會列出該 SSL 加密方式的強度,就可以用來刪除強度不足的加密方式
註2:nmap 使用 --script 這個參數,有一個重要的條件,在套件安裝後必需出現這個路徑且/usr/share/nmap/scripts/要有相關檔案,如 ssl-enum-ciphers 必需要有 /usr/share/nmap/scripts/ssl-enum-ciphers.nse 這個檔案才能使用該 script
註3:新版的 nmap (7.8),在每一個 ciphers 後面會有一個英文字,強到弱分別為 A-F,六個等級,A最強

補充1:在預設的情形下,nmap 只掃瞄 1000 個常用的 port
補充2:使用 -p 下 port range 只能列到 26 個 port,超過就會不顯示 closed 的 port

檢查 192.168.56.89 主機,22 port 所使用的加密方式
nmap -p 22 --script ssh2-enum-algos 192.168.56.89
這個方式可以列出 SSH 目前所有的(kex、server_host_key、encryption、mac、compression)演算法

檢查 192.168.56.89 主機,443 port 所使用的 ciphers
nmap --script ssl-dh-params -p 443 192.168.56.89
這個方式可以列出 443 目前有無使用 Diffie-Hellman 演算法

參考資料:
胖虎大的 blog -- 胖虎大,不好意思照抄了 ^^"
http://idobest.pixnet.net/blog/post/22040775-%5B%E8%BD%89%E8%B2%BC%5D-linux-%E7%B6%B2%E8%B7%AF%E6%AA%A2%E6%B8%AC%E5%B7%A5%E5%85%B7-nmap-%E7%9A%84%E7%94%A8%E6%B3%95   

微軟 TechNet
https://social.technet.microsoft.com/Forums/en-US/190f55d9-562f-4e7e-917f-5e1149bff286/how-do-i-get-remote-desktop-to-work-without-tlsrsawith3desedecbcsha?forum=mata

nmap 官網 -- 有完整的教學哦!
https://nmap.org/

看雪大的文章 -- 指令使用說明
https://bbs.pediy.com/thread-222803.htm

中文參考指南
https://hk.saowen.com/a/2d58ceaf53b47ee2055030515ebbc3865cbc9856ab0ccb87befafcd49441337a

30個常用指令
http://puremonkey2010.blogspot.com/2014/09/linux-top-30-nmap-command-examples-for.html

沙先生 -- 用 nmap 驗證支援的 TLS 版本和 Ciphers
https://shazi.info/%E7%94%A8-nmap-%E9%A9%97%E8%AD%89%E6%94%AF%E6%8F%B4%E7%9A%84-tls-%E7%89%88%E6%9C%AC%E5%92%8C-ciphers/

stackoverflow -- bonsaiviking 大回應
https://stackoverflow.com/questions/37653741/why-are-tls-dhe-rsa-with-3des-ede-cbc-sha-and-tls-rsa-with-3des-ede-cbc-sha-cons

laconicwolf 大的文章 -- Nmap Scan to CSV
https://laconicwolf.com/2018/02/04/nmap-scan-csv/

maaaaz 大的 git -- NmaptoCSV
https://github.com/maaaaz/nmaptocsv

傲笑封塵大文章
https://www.lijyyh.com/2012/03/nmap-using-nmap-security-scanner.html


89. CentOS 7 -- RamDisk

在開機速度上 CentOS 7 明顯比 CentOS 6、5 快上許多,最主要的原因就是 CentOS 7 在開機時用了 RamDisk。下面就是在開完機後,使用 df -h 看到的,這些都是使用 RamDisk

devtmpfs             910M     0  910M   0% /dev
tmpfs                920M     0  920M   0% /dev/shm
tmpfs                920M  8.5M  912M   1% /run
tmpfs                920M     0  920M   0% /sys/fs/cgroup
tmpfs                184M     0  184M   0% /run/user/1000

參考資料:sandeep 大文章
https://www.thegeekdiary.com/why-centos-rhel-7-have-many-tmpfs-6-tmpfs-filesystem-and-what-is-their-purpose/ 


90. 虛擬建置 CentOS 7、Ubuntu 16

使用虛擬機建置 CentOS 7、Ubuntu 16 以上的版本,規格 1 Core、2GB RAM 至少提供 5GB 以上的硬碟空間,否則容易發生空間不足的情形(swap 2GB、OS 0.6 GB) 


91. tcp_keepalive_time

/proc/sys/net/ipv4/tcp_keepalive_time

參考資料:redhat 官方教學
https://access.redhat.com/solutions/23874 


92. smartmontools -- TUI 的 smart 工具

在 windows 中有 CrystalDiskInfo 這樣的工具,在 Linux 中一定也會有類似的工具,smartmontools,這個跟 DiskInfo 一樣是個簡單的小工具,方便好用

常用指令
smartctl -i /dev/sda <== 確認 sda 是否有開啟 smart 功能。這個會列出很多硬碟資訊
smartctl -s on /dev/sda <== 開啟 sda smart 功能
smartctl -H /dev/sda <== 檢查 sda 硬碟狀態。正常會出現
SMART overall-health self-assessment test result: PASSED

Ubuntu log:/var/log/syslog
CentOS Log:/var/log/messages

註:如果 CentOS 有加裝 X-win 這個套件會自動安裝並常駐

參考資料:
iT 邦 -- 凍仁大的 blog
https://ithelp.ithome.com.tw/articles/10138336  


93. Linux Packages Search -- 詳細完整的套件收集站

這個網站收集個各個知名的 Linux 廠商的套件,而且分類清楚、詳細,很值得收藏

官網:https://pkgs.org/ 


94. yum 的額外工具 -- yum-utils

towns 在使用 ubuntu apt 時,有一個很方便的指令 apt purge [套件名稱],可以完整移除套件及相關設定,尤其在移除 kernel 時更是方便,所以想了一下 CentOS 中是也有類似方式,google 了一下,發現了 yum-utils 工具,看來這個工具可以做到如 apt purge 的功能哦!

yum-utils 有很多功能,遇到再一個一個寫下來吧!

package-cleanup --oldkernels --count=2 <== 清除舊核心資料,保留2個
count=2 是預設值,下不下都可以

yum-config-manager --enable docker-ce-edge <== 開啟 docker-ce.repo 中 docker-ce-edge 連結
yum-config-manager --disable docker-ce-edge <== 關閉 docker-ce.repo 中 docker-ce-edge 連結
註:docker-ce-edge 指的是 repo 檔中 [] 的文字
yum-config-manager --add-repo [完整URL(檔案)路徑] <== 取得指定 repo

參考資料:
Tackmint -- Aaron Kili 大說明
https://www.tecmint.com/delete-old-kernels-in-centos-rhel-and-fedora/ 


95. rpm、deb 互轉

這個功能特別了

參考資料:GTW
https://blog.gtwang.org/linux/convert-from-rpm-to-deb-and-deb-to-rpm-package-using-alien/


96. curl vs telnet

curl http://192.168.1.100  <== 會直接回應訊息
telnet 192.168.1.100 80 <== 不會回應訊息,需要自行打指令

參考資料:herb 口述 


97. Solaris 及 FreeBSD 網路注意事項

這兩個系統沒有 Default Gateway,需設定 Default Route,這一點比較像網路設備 ^^ 


98. Ansible 網管人員建立系統的好幫手

Ansible 類似 script ,他可以幫網管做好基本 OS 建置,而且是大多數常見的 Linux 版本都可以使用哦!

參考資料:

官網
https://www.ansible.com/

安裝說明
http://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html

教學網站 -- 凍仁翔大文章
https://legacy.gitbook.com/book/chusiang/automate-with-ansible/details   


99. nc 指令

towns 常用的指令是 telnet,用於測試對方 server 某個 port 是否開啟,不過,telnet 只能用於 TCP,所以試試 nc 指令吧!這個指令可以提供蠻多的測試功能呢!

參考資料:iAcn 大的 blog
https://iacn.me/2017/08/16/linux-netcat/ 


100. Tomcat 設定問題

Tomcat 預設啟動 8080,避免與其他 web app 衝途(如apache、nginx等…),如果要使用 80 port ,那就得修改設定了

參考資料:3C科技海
http://blog.xuite.net/tolarku/blog/208730160-Tomcat+%E9%81%8B%E8%A1%8C%E5%9C%A8+port+80

留言

這個網誌中的熱門文章

zimbra 安裝、管理、設定

Fortigate 100D -- 管理、設定

IT 隨手記6