因為大多數編輯器存檔都是ctrl+s
在linux使用終端機vim檔案時不小心按到ctrl+s會整個畫面卡住
解法:
ctrl+q
http://www.savs.hcc.edu.tw/~chuavv/lcmd/lcmd.htm
Linux切換鍵
<Ctrl><Alt><F1> | 切換至第一文字終端。在Linux之下你可以同時打開好幾個終端機。 |
<Ctrl><Alt><Fn> | (n=1..6) 切換至第n文字終端。 |
<Ctrl><Alt><F7> | 切換至第一圖形 (GUI)終端。 |
<Ctrl><Alt><Fn> | (n=7..11) 切換至第n圖形 (GUI)終端。 |
<Tab> | 自動完成指令。 |
<ArrowUp> | (↑鍵) 捲動而編輯指令歷史。按<Enter>來執行。 |
<Shift><PgUp> | 捲上終端之輸出。可以用在login指示下,這樣可以看啟動電腦所有之資訊。 |
<Shiift><PgDown> | 捲下終端之輸出。 |
<Ctrl><Alt><+> | (X-windows) 切換X-server至下一螢幕解析度。 |
<Ctrl><Alt><-> | (X-windows) 切換X-server至前一螢幕解析度。 |
<Ctrl><Alt><BkSpc> | (X-windows) 殺掉目前的X-windows server。如果X-windows server當機時就用這方法離開。 |
<Ctrl><Alt><Del> | 關掉系統,然後重新啟動。 |
<Ctrl>c | 殺掉目前正在執行的程序。 |
<Ctrl>d | 從目前之終端離開(logout)。 |
<Ctrl>d | 傳送「End-of-File」至目前正在執行的程序。 |
<Ctrl>s | 暫停終端之輸出。. |
<Ctrl>q | 回復終端之輸出。 |
<Ctrl>z | 將目前之程序放到背景。 |
reset | 如你用cat顯示二進制檔之內容到螢幕,有時螢幕上所顯示之字元都是亂碼。用之指令來回復正常之輸出。 |
<MiddleMouseButton> | <滑鼠中鍵>:貼上在別的地方已標記過的文字。這是Linux正常的「複製/貼上」運作。 |
~ | 自己的home directory。 |
. | (句點) 目前的目錄。 |
.. | (兩點) 父(上一層的)目錄。 |
系統資訊指令
指令 | 說明 |
pwd | 顯示目前使用之目錄。 |
hostname | 顯示或改變這主機(local host)之名稱。 |
whoami | 顯示我的login name. |
date | 顯示或改變電腦之日期和時間。格式為[mmddhhmm[yyyy]]。[月/日/時(24)/分[/年]]。例:改變目前之日期和時間為2000-12-31 23:57,就下:date 123123572000。 |
time | 確定一個程序需要多少時間來完成和其它資訊。 |
who | 顯示在這電腦已連線之使用者。 |
rwho -a | 顯示在這網路上所有的使用者。rwho程序應該已啟動。如沒有啟動的話,執行setup來啟動(你必須是root)。 |
finger user_name | 顯示使用者之系統資訊,如 finger root。 |
uptime | 顯示這電腦已開機多久的時間了。 |
ps | 顯示所有正在執行的程序(process)。 |
ps axu | more | 顯示所有正在執行的程序,包含程序之擁有者。 |
top | 繼續顯示正在執行的程序,用cpu使用率來排列。 |
uname -a | 顯示伺服器之資訊。 |
free | 顯示記憶体資訊(kbytes為單位)。 |
df -h | (=disk free) 顯示所有檔案系統的磁碟空間之資訊。 |
du / -bh | more | (=disk usage) 顯示從根目錄有關每子目錄佔用的磁碟空間。 |
cat /proc/cpuinfo | 顯示cpu有關資料。 |
cat /proc/interrupts | 顯示所有已用到的中斷。 |
cat /proc/version | 顯示Linux的版本和其它資訊。 |
cat /proc/filesystems | 顯示目前所使用的檔案系統。 |
cat /etc/printcap | 顯示列表機的設定。 |
lsmod | (當root) 顯示已載入的核心模組。 |
set | more | 顯示使用者之環境變數。 |
echo $PATH | 顯示環境變數「PATH」之內容。 |
網路工具
netconf | (當root)設定網路(有功能表)。 |
ping machine_name | 檢查是否可以連接另一個電腦(給那電腦的名稱或IP)。要結束就按<Ctrl><c>。 |
route -n | 顯示路由表。 |
ipfwadm -F -p m | 設定防火牆,IP轉送規則和虛擬IP (masquerading)。 |
ifconfig | (當root) 顯示使用的網路介面(ethernet,ppp,等)。要改變介面之設定請參考ifconfig --help。 |
ifup interface_name | (使用者下/sbin/ifup) 啟動網路介面。例:ifup eth0,ifup ppp0。讓使用者啟動ppp之介面必須在ppp之設定時(執行netconf)已給使用者這個權限。 |
ifdown interface_name | (使用者下/sbin/ifdown) 關閉網路介面。 |
基本操作
ls | 列出目前目錄之內容。dir是ls的別名。 |
cd directory | 改變目錄。 |
cp source destination | 複製檔案。 |
mcopy source destination | 複製檔案從/至dos檔案系統(不需要mount)。例: mcopy a:\autoexec.bat ~/junk。請參考man mtools有關在Linux直接用dos的一些指令,如:mdir, mcd,mren,mmove,mdel,mmd,mrd,mformat… |
mv source destination | 搬移檔案或更改檔名。 |
ln -s source destination | 建立符號連接。 |
rm files | 刪除檔案。 |
mkdir directory | 建立新的子目錄。 |
rmdir directory | 刪除空的子目錄。 |
rm -r files | (遞迴之刪除) 刪除檔案,目錄以及下面的子目錄。 |
cat filename | more | 一頁一頁的顯示檔案之內容。 |
less filename | 捲上/下文字檔之內容。要結束就按q。 |
pico filename | 編輯文字檔。 |
lynx html_file | 文字模式之瀏覽器。 |
tar -zxvf filename | 解壓.tar.gz或.tgz檔案。 |
find / -name "filename" | 從根目錄尋找filename檔。filename可以包含萬用字*和?。 |
locate filename | 比較快的尋找檔案。 |
pine | 文字模式的email程式。另一個email程式是elm。 |
mc | 執行Midnight Commander檔案管理程式。像dos下的Norton Commander。 |
telnet server | 用telnet通訊協定連接到另一個電腦。你可以用對方的電腦名稱或IP。對方電腦會要求你輸入login name和password。 |
rlogin server | (=remote login) 遠方之login。連接時會自動使用你在這電腦的login name和password。如失敗,就會要求你輸入login name和password。 |
rsh server | (=remote shell) 遠方使用者介面(shell)。另一個方法與遠方電腦連接。連接時會自動使用你在這電腦的login name和password。如失敗,就會要求你輸入login name和password。 |
ftp server | 用ftp通訊協定連接到另一個電腦。ftp是使用在與遠方電腦複製檔案。 |
minicom | Minicom串列埠通訊程式。像dos下之Telix。 |
./program_name | 執行在目前目錄下的程式。 |
xinit | 執行沒有視窗管理員的X-windows server。 |
startx | 執行有視窗管理員的X-windows server。 |
startx -- :1 | 執行下一X-windows在顯示器1(顯示器0為初始直)。你可以同時使用幾個圖形終端。用 <Ctrl><Alt><F7>,<Ctrl><Alt><F8>,等來切換。 |
xterm | (X terminal) 執行一個X-windows終端。離開時就下exit。 |
xboing | (X terminal)。很好玩的遊戲。 |
gimp | (X terminal) 影像編輯器,像PhotoShop或Corel Draw。 |
netscape | (X terminal) 執行netscape。 |
netscape -display host:0.0 | (X terminal) 執行netscape在這電腦但將輸出傳到遠方電腦名稱為host的顯示器0螢幕0。你可以使用xhost在這電腦給與權限將輸出傳到遠方電腦host。 |
shutdown -h now | (當root) 關機。平常用在遠方關機。一般的關機方法是按 <Ctrl><Alt><Del>。 |
halt reboot | (當root) 關機/重新啟動。 |
基本管理指令
printtool | (當root在X-terminal)設地定列表機。這些設定會寫在/etc/printcap。 |
setup | (當root) 設定滑鼠,音效卡,鍵盤,X-windows,系統之服務。 |
alias ls="ls-Fskb --color" | 建立ls之別名美化ls之輸出。如你要所有使用者可以使用這功能就放在/etc/bashrc。 |
adduser user_name | (當root) 建立新使用者帳號。例:adduser barbara。不要忘下一步是要設定新使用者之password。新使用者的磁碟空間是放在/home/user_name。 |
useradd user_name | 和adduser相同之指令。 |
userdel user_name | 9當root) 刪除使用者帳號。使用者之磁碟空間和email是另外處理。 |
groupadd group_name | 建立新的group(群組)。 |
passwd | 改變自己的password。如你是root,你可以改變任何使用者之password:password user_name。 |
chmod perm files | (=change mode) 改變自己檔案之權限(root可以改變任何檔案)。檔案權限有三種:read能讀 (r),write能寫 (w),execute能執行 (x)給與三種使用者:owner擁有者 (u),members屬擁有者同樣的群組 (g),others其他使用者 (o)。用ls -l來查看檔案的權限。rwxrwxrwx表示所有使用者對這檔案有所有權限。左邊三個字元代表擁有者之權限,中間三個代表與擁有者同群之權限,右邊三個代表其他使用者之權限。沒有權限是用「-」。例:chmod a+r junk會給所有使用者(a=all:user+group+others)對junk檔案讀取之權限。chmod o-x junk會取消其他使用者對junk檔案執行之權限。請參考chmod --help和man chmod。要設定你建立檔案的初始權限你可以用umask(請參考man umask)。 |
chown new_owner files chgrp new_group files | 改變檔案之擁有者和群組。如你複製一個檔案給另一個人你就用這兩個指來令改擁有者和群組。 ex. drwxr-xr-x 2 root root 4096 1月 5 21:49 public_html/ bear@ubuntu-bear:/var/www/mytable.ubuntu$ sudo chown -R bear:bear public_html/ |
su | (=super user) 擔任root之身份。系統會要求你輸入root之password。要離開時,就下exit。如在你擔任root的身份的同時也建立root的環境變數就用su -l。 |
rpm -ivh files | (=Red Hat Package Manager[包裝管理員])。安裝(-i)或更新/安裝(-U) rpm包裝。 |
glint | (X terminal) 圖形模式之rpm包裝管理員。 |
kernelcfg | (當root在 X terminal) 圖形模式啟動或取消核心模組。 |
setserial /dev/cua0 port 0x03f8 irq 4 | (當root)設定非標準參數的串列埠。左邊的例子顯示出第一串列埠(dos的com1)標準的參數。如你要每次啟動電腦就用這設定,就將這指令加在 /etc/rc.d/rc.local檔裡。請參考man setserial。 |
mount -t auto /dev/fd0 /mnt/floppy | (當root) 掛上(mount)軟碟機。/mnt/floppy目錄必須存在而是空的。 |
mount -t auto /dev/cdrom /mnt/cdrom | (當root) 掛上(mount) CDROM。 |
mount /mnt/floppy | (當使用者) 掛上(mount)軟碟機。必須設定/etc/fstab使用者才可以下這指令。 |
mount /mnt/cdrom | (當使用者) 掛上(mount)CDROM。必須設定/etc/fstab使用者才可以下這指令。 |
umount /mnt/floppy | 裁下(Unmount)軟碟機。 |
程序(process)控制
ps | (=print status) 顯示目前正在執行的程序和程序之ID (PID)號碼。如你想顯示所有正在執行的程序和誰執行這些程序,就下ps axu。 |
fg PID | 將在背景的程序放在前景。 |
bg PID | 將在前景的程序放在背景。熱鍵為<Ctrl>z。 |
kill PID | 殺掉正在執行的程序。用ps來確定程序的PID。 |
killall program_name | 殺掉正在執行的程序。用ps來確定程序的名稱。 |
xkill | (Xwindow terminal) 用滑鼠點選你要殺掉的程序。 |
lpc | (當root) 檢查和控制列表機。 |
lpq | 顯示列表機佇列之內容。 |
lprm job# | 刪除在列表機佇列裡的工作。 |
nice program_name | 執行程序同時設定程序之優先權。 |
renice PID | 改變正在執行的程序之優先權。 |
Linux內建之發展工具和程式語言
emacs | (X-terminal) emacs編輯器。 |
gcc c_source_filename | GNU C 編譯器。 |
g++ cpp_source_filename | GNU C++ 編譯器。 |
perl | 指令稿(script)語言。指令稿是相似dos之批次檔。 |
python | 物件導向直譯器。免費手冊可以在 http://www.python.org/doc/ 瀏覽或在 ftp://ftp.python.org 下載。 |
tcl | 指令稿語言。 |
wish | (xterm) Tk之前端(front end)和在X-windows tcl之延伸。平常用在寫前端程式。 |
g77 | GNU FORTRAN編譯器。 |
f2c | FORTRAN至c之轉換器。 |
fort77 | FORTRAN編譯器。呼叫 f2c和gcc或 g++。 |
basic | Chipmunk Basic。 |
cvs | 平行版本系統。 |
diff file1 file2 [>patchfile] | 比較兩個檔案的內容而列出不同之處。「>patchfile」將diff的結果寫在patchfile裡。 |
sdiff [-w 80] file1 file2 | 比較兩個檔案的內容。用並排方式顯示。「-w 80」告訴sdiff用80行來顯示兩個檔案的內容。 |
patch file2patch < patchfile | 將diff所產生的patchfile使用在file2patch。要一次完成這功能就把diff和patch兩個指令混合在一起:diff file1 file2 | patch file2patch。file2patch可能是file1或file2。 |
grep string filename | 在檔案內尋找字串。 |
tr | 翻譯工具。列:文字檔案內的字串用另一字串來代替。 |
gawk | GNU awk。常用來處理有定界符號(delimited)的文字檔。 |
sed | 處理文字檔之工具。 |
找3層內的pl檔
$ find ./ -name "*.pl" -maxdepth 3
http://blog.csdn.net/simon_dong618/article/details/1581132
Linux中source命令的用法
source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录。
找資料夾下sess_* 檔案內含有IKE和特定字串(your_text)的內容並高亮(highlight)
$ grep -l IKE sess_* ; if [ $? -eq 0 ] ; then for i in `grep -l IKE sess_*` ; do grep --color=always your_text $i | more ; done fi
sess_xxx
sess_xxo
1:IKE your_text
1:IKE ssss your_text33
看xxx資料夾大小
$ du -h --max-depth=1 xxx
看目錄下的資料夾大小,以MiB顯示並排序
http://butlerpc.net/blog/2012/01/linux-disk-usage-du-sorted-by-size/
$ du --block-size=MiB --max-depth=1 | sort -n
什麼是MiB?
https://zh.wikipedia.org/wiki/Mebibyte
「mebibyte」是數字信息中的一個字節數單位。前綴「mebi」等於2^20,1 mebibyte等於1,048,576字節。「mebibyte」記作「MiB」
與 MB(10^6)數值接近
複製檔案並建立檔案
http://stackoverflow.com/questions/947954/how-to-have-the-cp-command-create-any-necessary-folders-for-copying-a-file-to-a
mkdir -p ~/test/app/Controller/ && cp app/Controller/AppController.php "$_"
新增你的慣用指令~/.bashrc
http://blog.yam.com/daniel1222/article/11044777
[root@linux ~]# vi ~/.bashrc
# .bashrc # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions PATH="/bin:/sbin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" PATH="$PATH":/usr/X11R6/bin:/home/dmtsai/bin LANG=zh_TW.big5 LC_TIME=C export PATH LC_TIME LANG umask 022 alias rm=’rm -i’ alias cp=’cp -i’ alias mv=’mv -i’ alias ll=’ls -l’ alias lm=’ls -al|more’ alias h=’history’
在linux介面如果常使用指令像是"ls -al"之類的指令,我們會把用習慣的指令改成"ll"或"lm"等等,就把常用的指令直接寫入~/.bashrc,每次開機就會自動載入你慣用的指令了。(轉貼於鳥哥的私房菜)
cp如果沒有資料夾就建資料夾
http://stackoverflow.com/questions/947954/how-to-have-the-cp-command-create-any-necessary-folders-for-copying-a-file-to-a
像mkdir -p /var/path/to/your/dir 一樣 如果沒資料夾就直接建資料夾
解法:
$ rsync -a myfile /foo/bar/ # works if /foo exists but /foo/bar doesn't. bar is created.
複製時忽略某資料夾
http://stackoverflow.com/questions/4585929/how-to-use-cp-command-to-exclude-a-specific-directory
$ rsync -av --progress sourcefolder /destinationfolder --exclude thefoldertoexclude
ex.
$ rsync -av --progress sourcefolder /destinationfolder --exclude .git
更改linux的時間
查硬體時間
# hwclock
Fri Oct 24 01:00:44 2014 -0.553908 seconds
查系統時間
# date
Fri Oct 24 01:00:50 CST 2014
設定系統時間
# date --set="23 Oct 2014 17:04:00"
Thu Oct 23 17:04:00 CST 2014
重查一次系統時間
# date
Thu Oct 23 17:04:01 CST 2014
但硬體時間還是沒變
# hwclock
Fri Oct 24 01:04:11 2014 -0.937908 seconds
將現在系統時間設給硬體時間
# hwclock --systohc
設定硬體時間完成
# hwclock
Thu Oct 23 17:04:32 2014 -0.094159 seconds
註:
將硬體時間設給系統時間(未測試)
# hwclock --hctosys
使用ntpdate校準Linux時間(date的系統時間)
http://tongcx.no-ip.org:81/node/146
$ sudo ntpdate time.windows.com
31 Aug 17:57:11 ntpdate[29372]: step time server 23.99.222.162 offset -7.983912 sec
ntpdate更新失敗(AWS機器)
# ntpdate time.windows.com
30 Jun 02:22:03 ntpdate[5475]: the NTP socket is in use, exiting
http://superuser.com/questions/639202/updating-time-ntpdate3108-the-ntp-socket-is-in-use-exiting/639206
解法:把ntpd服務關了再執行ntpdate
# service ntpd stop
# ntpdate time.windows.com
30 Jun 02:23:16 ntpdate[5515]: adjust time server x.x.x.x offset -0.019553 sec
# service ntpd start
註:AWS沒辦法用hwclock存取硬體時間
設定時區(AWS)
http://serverfault.com/questions/380561/how-do-i-change-timezone-in-centos-6-2
用date查到的時區是UTC的,想要把它改成UTC+8
# date
Thu Jun 30 02:36:10 UTC 2016
# tzselect =>測試後無效
或
# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime => 原本的/etc/localtime可刪除
再用date檢查
# date
Thu Jun 30 10:39:28 CST 2016
沒改 /etc/sysconfig/clock
改完時間後要重啟crond ,cron job 執行的時間才會正確
# service crond restart
更改時區(timezone)
https://www.cyberciti.biz/faq/centos-linux-6-7-changing-timezone-command-line/ How To Change Timezone on a CentOS 6 and 7
查可用的timezone
# timedatectl list-timezones | grep Asia
設置時區
# timedatectl set-timezone Asia/Taipei
檢查
# date
# ls -l /etc/localtime
以group身份編輯檔案
bear@SGRD:/home/www$ ls -ld svn
drwxr-sr-x 3 http http 4096 1月 7 10:21 svn
bear@SGRD:/home/www$ ls -l svn
-rw-rw-r-- 1 root http 1154 1月 7 15:51 svnlog_test.php
要讓bear可以進svn資料夾並編輯svnlog_test.php:
編輯/etc/group:
http:x:33:bear
更變svnlog_test.php檔案權限group可以讀寫(x6x)
最後記得重新登錄,才能編輯
Linux terminal 的Tab 和上下左右鍵沒作用
http://askubuntu.com/questions/163802/backspace-tab-del-and-arrow-keys-not-working-in-terminal-using-ssh
原因:
/etc/passwd 中
bear:x:1009:1009::/home/bear:/bin/sh
使用了 /bin/sh 當登录使用的Shell(就是对登录命令进行解析的工具) => 要用/bin/bash
但是 /etc/passwd 我又不能編輯怎麼辦呢?
http://askubuntu.com/questions/163802/backspace-tab-del-and-arrow-keys-not-working-in-terminal-using-ssh
$ chsh -s /bin/bash
=> 不知道為什麼 前兩次 $ chsh -s /bin/bash 都出現錯誤訊息:chsh: user '/bin/bash' does not
exist ,第三次才成功
使用awk查nginx log看有什麼ip連進來
http://askubuntu.com/questions/231995/how-to-separate-fields-with-space-or-tab-in-awk
查有哪些ip連進來 ( 請注意單引號和中括號的位置 )
# cat gitlab_access.log | awk '{print $1}' | uniq -c
10 x.x.x.60
9 x.x.x.174
# cat gitlab_access.log | awk {'print $1'} | uniq -c
10 x.x.x.60
9 x.x.x.174
Rellik: (單引號)放外面是正確的
順便列出時間
# awk '{print $1" "$4"]"}' gitlab_access.log | sort -n | uniq -c | sort -n => 較精簡,少了cat
1 x.x.x.174 [09/Nov/2015:06:07:07]
3 x.x.x.174 [09/Nov/2015:06:07:08]
3 x.x.x.60 [09/Nov/2015:06:04:18]
5 x.x.x.174 [09/Nov/2015:06:07:06]
7 x.x.x.60 [09/Nov/2015:06:04:19]
# cat gitlab_access.log | awk '{print $1" "$4"]"}' | sort -n | uniq -c | sort -n
1 x.x.x.174 [09/Nov/2015:06:07:07]
3 x.x.x.174 [09/Nov/2015:06:07:08]
3 x.x.x.60 [09/Nov/2015:06:04:18]
5 x.x.x.174 [09/Nov/2015:06:07:06]
7 x.x.x.60 [09/Nov/2015:06:04:19]
說明:
第一個sort -n 是對ip排序,第二個sort -n 是對時間排序
要打印空白或其他符號(ex. ] ),用雙引號("")包起來
(ubuntu) 設定固定IP
http://blog.changyy.org/2012/11/linux-static-ip-ubuntu-1204.html
編輯 /etc/network/interfaces
加入下面設定
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.x.147
netmask 255.255.255.0
network 192.168.x.0
broadcast 192.168.x.255
gateway 192.168.x.1
dns-nameservers 192.168.x.1
重啟網路
$ sudo /etc/init.d/networking restart
最後一行 dns-nameservers 若不加的話,從開機時 /etc/resolv.conf 會被清空。
看哪個資料夾空間佔的大(Izumi)
$ du -sh /* 2>/dev/null
使用mytop
~/.mytop 加入
user=user
pass=pass
delay=1
port=3306
batchmode=0
header=1
color=1
然後
$mytop -h ip
使用strace追蹤進程是哪裡卡住
https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.html
根據pid使用strace
$ strace -o output.txt -T -tt -e trace=all -p 28979
如果是切root卡住,也可以使用strace
https://blog.csdn.net/Bob__Yu/article/details/94583305
#strace -T su -
https://www.commandlinefu.com/commands/view/8097/easily-strace-all-your-apache-processes
ps aux 找出pid後搭配xargs 執行strace
# ps aux | grep php | grep calculate | grep work
root 92301 0.7 0.1 287708 33308 ? S 18:11 0:00 php artisan queue:work ga2-calculate --queue=ga2-calculate --delay=0 --memory=128 --sleep=3 --tries=0 --env=production
# ps aux | grep php | grep calculate | grep work | awk '{print " -o " $2 ".txt -T -tt -e trace=all -p " $2}' | xargs strace
Process 92301 attached
然後檢查 92301.txt即可
輸出檔案精確按時間命名
https://stackoverflow.com/questions/12366995/how-to-derive-current-date-and-time-and-append-at-the-end-of-each-line-that-cont
# ps aux | grep php | grep calculate | grep work | awk '{print " -o " strftime("%Y-%m-%d_%H")"-"$2 ".txt -T -tt -e trace=all -p " $2}' | xargs strace
文件名將會是:2018-11-17_11-92301.txt
bash prompt生成器
http://bashrcgenerator.com/
在 .bashrc 中加入這行後重新加載
export PS1="\d \t\n[\u@\h \W]\\$ \[$(tput sgr0)\]"
prompt就會加入時間,可以自定義你要的bash prompt格式
Thu Feb 14 15:09:07
[username@localhost project]$
用戶與root的$PATH不一樣
[bear@host www]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
[root@host ~]# echo $PATH
/usr/local/redis/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
https://unix.stackexchange.com/questions/104727/add-a-path-in-path-globally-for-every-user
解法:
[bear@host www]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
[bear@host www]$ . /etc/profile
[bear@host www]$ echo $PATH
/usr/local/redis/bin/:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
但還是沒有 /usr/local/bin
解法:
$ vim ~/.bashrc
PATH=$PATH:/usr/local/bin
export PATH
$ . ~/.bashrc
$ echo $PATH
/usr/local/redis/bin/:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/home/bear/.local/bin:/home/bear/bin:/usr/local/bin
SSH 連上後卡住很慢才登入成功
Using username "bear".
(卡在這)
解法:
# vim /etc/ssh/sshd_config
UseDNS no
UsePAM no
# service sshd reload
顯示文件範圍
當大檔案如nginx access log有很多行,只想看第100000到120000行
https://serverfault.com/questions/133692/how-to-display-certain-lines-from-a-text-file-in-linux
# sed -n '100000,120000p; 120001q' front_access.log > ~/wwwlogs/front_access_100000_120000.log
ps. 加 ; 120001q 是為了更快
正則統計文件匹配了幾行
https://unix.stackexchange.com/questions/6979/count-total-number-of-occurrences-using-grep
# grep -o '8.8.8.8.*POST.*signin' front_access_100000_120000.log | wc -l
2033
tail時只顯示grep匹配的內容
https://stackoverflow.com/questions/17779252/ssh-tail-output-lines-only-with-keyword
# tail -f front_access.log | grep "POST.*signin"
test.com request_time= "0.146" remote_addr= "x.x.x.x" http_x_forwarded_for= "x.x.x.x" - [29/Jun/2019:18:19:50 +0800] "POST /signin HTTP/1.1" 200 body_bytes_send= "120" bytes_sent= "785" "https://test.com/signin" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/x.x.x.x Safari/537.36"
# vim /etc/ssh/sshd_configChallengeResponseAuthentication 從yes改noChallengeResponseAuthentication no
https://www.commandlinefu.com/commands/view/8097/easily-strace-all-your-apache-processes
ps aux 找出pid後搭配xargs 執行strace
# ps aux | grep php | grep calculate | grep work
root 92301 0.7 0.1 287708 33308 ? S 18:11 0:00 php artisan queue:work ga2-calculate --queue=ga2-calculate --delay=0 --memory=128 --sleep=3 --tries=0 --env=production
# ps aux | grep php | grep calculate | grep work | awk '{print " -o " $2 ".txt -T -tt -e trace=all -p " $2}' | xargs strace
Process 92301 attached
然後檢查 92301.txt即可
輸出檔案精確按時間命名
https://stackoverflow.com/questions/12366995/how-to-derive-current-date-and-time-and-append-at-the-end-of-each-line-that-cont
# ps aux | grep php | grep calculate | grep work | awk '{print " -o " strftime("%Y-%m-%d_%H")"-"$2 ".txt -T -tt -e trace=all -p " $2}' | xargs strace
文件名將會是:2018-11-17_11-92301.txt
bash prompt生成器
http://bashrcgenerator.com/
在 .bashrc 中加入這行後重新加載
export PS1="\d \t\n[\u@\h \W]\\$ \[$(tput sgr0)\]"
prompt就會加入時間,可以自定義你要的bash prompt格式
Thu Feb 14 15:09:07
[username@localhost project]$
用戶與root的$PATH不一樣
[bear@host www]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
[root@host ~]# echo $PATH
/usr/local/redis/bin/:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
https://unix.stackexchange.com/questions/104727/add-a-path-in-path-globally-for-every-user
解法:
[bear@host www]$ echo $PATH
/sbin:/bin:/usr/sbin:/usr/bin
[bear@host www]$ . /etc/profile
[bear@host www]$ echo $PATH
/usr/local/redis/bin/:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
但還是沒有 /usr/local/bin
解法:
$ vim ~/.bashrc
PATH=$PATH:/usr/local/bin
export PATH
$ . ~/.bashrc
$ echo $PATH
/usr/local/redis/bin/:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/home/bear/.local/bin:/home/bear/bin:/usr/local/bin
SSH 連上後卡住很慢才登入成功
Using username "bear".
(卡在這)
解法:
# vim /etc/ssh/sshd_config
UseDNS no
UsePAM no
# service sshd reload
顯示文件範圍
當大檔案如nginx access log有很多行,只想看第100000到120000行
https://serverfault.com/questions/133692/how-to-display-certain-lines-from-a-text-file-in-linux
# sed -n '100000,120000p; 120001q' front_access.log > ~/wwwlogs/front_access_100000_120000.log
ps. 加 ; 120001q 是為了更快
正則統計文件匹配了幾行
https://unix.stackexchange.com/questions/6979/count-total-number-of-occurrences-using-grep
# grep -o '8.8.8.8.*POST.*signin' front_access_100000_120000.log | wc -l
2033
tail時只顯示grep匹配的內容
https://stackoverflow.com/questions/17779252/ssh-tail-output-lines-only-with-keyword
# tail -f front_access.log | grep "POST.*signin"
test.com request_time= "0.146" remote_addr= "x.x.x.x" http_x_forwarded_for= "x.x.x.x" - [29/Jun/2019:18:19:50 +0800] "POST /signin HTTP/1.1" 200 body_bytes_send= "120" bytes_sent= "785" "https://test.com/signin" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/x.x.x.x Safari/537.36"
ssh登入關閉google-authenticator驗證
https://wouter.borremans.nl/computer-related-howto/how-to/howto-remove-google-authenticator-from-ssh-logins/ HOWTO REMOVE GOOGLE AUTHENTICATOR FROM SSH LOGINS
1. 修改 /etc/ssh/sshd_config
2. 編輯 /etc/pam.d/sshd
# vim /etc/pam.d/sshd
註解掉這行
#auth required pam_google_authenticator.so
我只做這步,沒重啟動 SSH daemon,只要做第二步(修改 /etc/pam.d/sshd )即可
查機器外網IP
# curl icanhazip.com
223.136.97.188
# curl ifconfig.tw
223.136.97.188
沒有留言:
張貼留言