目 錄 mysql
第1章 信號管理進程 1 linux
1.1 kill命令 1 sql
1.2 killall命令 1 shell
1.3 pkill 1 數據庫
第2章 後臺進程管理 1 vim
2.1 jobs 1 bash
2.2 bg命令 1 spa
2.3 fg命令 1 .net
4.1 重定向:改變標準輸入、標準輸出的方向的就是重定向 1
使用kill命令發送信號和進程通訊
定義守護進程的角色
結束用戶會話和進程
kill命令:kill命令用來刪除執行中的程序或工做。kill可將指定的信息送至程序。預設的信息爲SIGTERM(15),可將指定程序終止。若仍沒法終止該程序,可以使用SIGKILL(9)信息嘗試強制刪除程序。程序或工做的編號可利用ps指令或job指令查看。
kill:後面接進程PID 殺死進程
[root@oldboy ~]# ps aux | grep vim
root 63112 0.0 1.0 151580 5084 pts/0 S+ 17:46 0:00 vim 123.txt
root 63162 0.0 0.2 112720 968 pts/1 R+ 17:47 0:00 grep --color=auto vim
[root@oldboy ~]# kill 63112
-l:列出所有的信息名稱
-15:TERM:終止進程
-9:強制終止
-1:掛起信號,可讓進程從新配置
killall命令使用進程的名稱來殺死進程,使用此指令能夠殺死一組同名進程
root 63747 0.0 1.0 151580 5080 pts/0 S+ 17:59 0:00 vim 123.txt
root 63781 0.0 1.0 151404 5064 pts/1 S+ 17:59 0:00 vim anaconda-ks.cfg
root 63927 0.0 0.2 112720 972 pts/2 R+ 18:02 0:00 grep --color=auto vim
[root@oldboy ~]# killall vim
pkill命令:能夠按照進程名殺死進程。pkill和killall應用方法差很少,也是直接殺死運行中的程序;若是您想殺掉單個進程,請用kill來殺掉。
-u:後面接用戶名,踢出登陸用戶,關閉終端
[root@oldboy ~]# w
18:06:53 up 23:01, 3 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 10.0.0.1 16:51 3:01 0.05s 0.05s -bash
oldboy pts/1 10.0.0.1 18:06 8.00s 0.00s 0.00s -bash
root pts/2 10.0.0.1 17:59 5.00s 0.02s 0.00s w
[root@oldboy ~]# pkill -u oldboy
-t:終端名,結束終端全部程序
[root@oldboy ~]# pkill -t pts/1
[oldboy@oldboy ~]$ vim 123.txt
Vim: Caught deadly signal TERM
Vim: Finished.
已終止
[oldboy@oldboy ~]$
-t -9:強制結束指定程序並關閉終端
[root@oldboy ~]# pkill -t -9 pts/1
jobs命令用於顯示Linux中的任務列表及任務狀態,包括後臺運行的任務。該命令能夠顯示任務號及其對應的進程號。
jobs
-l:顯示進程號
[root@oldboy ~]# jobs -l
[1]+ 62110 中止 vim 123.txt
-r:僅顯示運行(running)的任務
-s:僅顯示睡眠狀態(sleeping)的任務
[root@oldboy ~]# jobs -l
[1]+ 62110 中止 vim 123.txt
[2]- 62259 運行中 sleep 1000 &
[root@oldboy ~]# jobs -r
[2]- 運行中 sleep 1000 &
[root@oldboy ~]# jobs -s
[1]+ 已中止 vim 123.txt
bg命令用於將做業放到後臺運行,使前臺能夠執行其餘任務。該命令的運行效果與在指令後面添加符號&的效果是相同的,都是將其放到系統後臺執行。
[root@oldboy ~]# jobs
[1]+ 已中止 sleep 20000
[root@oldboy ~]# bg 1
[1]+ sleep 20000 &
將一個程序放在後臺運行 的另外一種方法
[root@oldboy ~]# sleep 2000 &
[1] 62626
fg命令用於將後臺做業(在後臺運行的或者在後臺掛起的做業)放到前臺終端運行。與bg命令同樣,若後臺任務中只有一個,則使用該命令時,能夠省略任務號
[root@oldboy ~]# jobs
[1]+ 運行中 sleep 20000 &
[root@oldboy ~]# fg 1
sleep 20000
sleep命令
時間:指定要暫停時間的長度。
時間長度,後面可接 s、m、h 或 d,其中 s 爲秒,m 爲 分鐘,h 爲小時,d 爲日數。
暫停5秒鐘
[root@oldboy ~]# sleep 5
[root@oldboy ~]#
這是一個在腳本中控制時間的重要命令 例如每隔3面輸出一行hello would!
while true
do
echo "hello would!"
sleep 3
done
執行一個shell程序時一般會自動打開三個標準文件
[root@oldboy ~]# vim 123.txt
[1]+ 已中止 vim 123.txt
[root@oldboy ~]# jobs -l
[1]+ 64561 中止 vim 123.txt
[root@oldboy ~]# ll /proc/64561/fd
總用量 0
lrwx------ 1 root root 64 8月 22 18:13 0 -> /dev/pts/2
lrwx------ 1 root root 64 8月 22 18:13 1 -> /dev/pts/2
lrwx------ 1 root root 64 8月 22 18:13 2 -> /dev/pts/2
lrwx------ 1 root root 64 8月 22 18:13 4 -> /root/.123.txt.swp
[root@oldboy ~]# ll /dev/std*
lrwxrwxrwx 1 root root 15 8月 20 14:49 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 8月 20 14:49 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 8月 20 14:49 /dev/stdout -> /proc/self/fd/1
標準輸入(STDIN,文件描述符爲0):一般對應終端的鍵盤,也可從其餘文件或命令或者文件內容中輸入。
標準輸出(STDOUT,文件描述符爲1):默認輸出到屏幕。
錯誤輸出(STDERR,文件描述符爲2):默認輸出到屏幕。
文件名稱(filename,文件描述符爲3+)
進程將從標準輸入文件中獲得輸入數據,將正常輸出數據輸出到標準輸出文件,而將錯誤信息送到標準錯誤文件中。
進程使用文件描述符(file descriptors)來管理打開的文件
1.當屏幕輸出的信息很重要,並且咱們須要將他存下來的時候;
2.後臺執行中的程序,不但願他干擾屏幕正常的輸出結果時;
3.系統的執行命令, 例如定時任務的執行結果,但願他能夠存下來時;
4.一些執行命令,咱們已經知道他可能出現錯誤信息, 想將他直接丟棄時;
5.錯誤信息與正確信息須要分別輸出時;
標準覆蓋輸出重定向 >
標準追加輸出重定向 >>
錯誤覆蓋輸出重定向 2>
錯誤追加輸出重定向 2>>
輸入重定向 <
類型 |
操做符 |
用途 |
標準覆蓋輸出重定向 |
> |
將命令的執行結果輸出到文件中,而不是直接顯示在屏幕上 |
標準追加輸出重定向 |
>> |
將命令執行的結果追加輸出到指定的文件 |
標準輸入定向 |
< |
將命令中接受輸入的途徑由默認的鍵盤更改成指定的文件 |
標準輸出重定向,先清空,後寫入,若是文件不存在則建立
[root@oldboy ~]# echo hello > 123.txt
標準輸出重定向,在源文件基礎上追加新的內容
[root@oldboy ~]# echo word >> 123.txt
正確輸出以及錯誤輸出重定向到指定的文件內
查詢/etc目錄下的以.conf結尾的文件,查詢成功的輸出到1.txt中,失敗的保存到2.txt中
[oldboy@oldboy ~]$ find /etc/ *.conf 1>1.txt 2>2.txt
查詢/etc目錄下的全部以.conf結尾的文件將成功和失敗的結果都保存到一個文件中
[oldboy@oldboy ~]$ find /etc *.conf &>1.txt
重定向到相同的位置
[root@oldboy pubilc]# ls /root /error >ab 2>&1
空設備,即將產生的輸出丟掉
[root@oldboy ~]# ls /root /error >ab 2>/dev/null
[root@oldboy ~]# ls /root /error >ab &>/dev/null
[root@oldboy ~]# vim ping.sh
ping -c1 10.0.0.200
if [ $? -eq 0 ];then
echo "10.0.0.200 is up."
else
echo "10.0.0.200 is down."
fi
[root@oldboy ~]# chmod +x ping.sh
[root@oldboy ~]# ./ping.sh
//改進後版
[root@oldboy ~]# vim ping.sh
ping -c1 10.0.0.200 &>/dev/null
if [ $? -eq 0 ];then
echo "10.0.0.200 is up."
else
echo "10.0.0.200 is down."
fi
[root@oldboy ~]# vim ping2.sh
ping -c1 10.0.0.200 &>/dev/null
if [ $? -eq 0 ];then
echo "10.0.0.200 is up." >>up.txt
else
echo "10.0.0.200 is down." >>down.txt
fi
[root@oldboy ~]# chmod +x ping2.sh
[root@oldboy ~]# ./ping2.sh
表中輸入:<等價於0<
安裝sendmail和xmail
[root@oldboy ~]# yum install -y sendmail mailx
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
修改主機解析:在hosts文件中加入本機的主機名和ip地址
[root@oldboy ~]# vim /etc/hosts
10.0.0.100 oldboy
重啓服務
[root@oldboy ~]# systemctl restart sendmail
發郵件 mail 郵箱地址 ; subject:主題 ; 郵件內容 ; .號結束郵件;
[root@oldboy ~]# mail 228361008@qq.com
Subject: 123
12345
123345
.
EOT
檢測是否收到郵件
[root@oldboy ~]# su - oldboy
[oldboy@oldboy ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/oldboy": 2 messages
> 1 root Wed Aug 22 11:25 21/651 "asd"
發郵件時將指定文件內容發送
[root@oldboy ~]# mail -s "test" oldboy < /etc/hosts
[root@oldboy ~]# grep 'root' < /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
if=/dev/zero if是源
of=file.txt 是目標
bs 是單個大小
count是文件數量
最後要生成的文件大小等於bs乘以count
[root@oldboy ~]# dd if=/dev/zero of=file.txt bs=5M count=4
記錄了4+0 的讀入
記錄了4+0 的寫出
20971520字節(21 MB)已複製,0.022939 秒,914 MB/秒
[root@oldboy ~]# ll file.txt -h
-rw-r--r-- 1 root root 20M 8月 22 22:03 file.txt
安裝mariadb數據庫
[root@oldboy ~]# yum install -y mariadb
已加載插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
表結構導入
[root@oldboy ~]# mysql -uroot -p123 <bbs.sql
[root@oldboy ~]# cat >> file.txt
12334
124
2134
[root@oldboy ~]# cat file.txt
12334
124
2134
[root@oldboy ~]# cat > file.txt <<a
> sdf
> sdfg
> df
> a
[root@oldboy ~]# cat file.txt
sdf
sdfg
df
管道操做符號"|"鏈接兩個命令,將左側的標準輸出,交給右側的標準輸入
格式:cmd1 | cmd2 [...| cmdn]
示例:使用管道和cut截取passwd中的用戶名使用的shell 的數量,排序
[root@oldboy ~]# cut -d":" -f7 /etc/passwd | sort | uniq -c | sort -nr
18 /sbin/nologin
3 /bin/bash
1 /sbin/shutdown
1 /sbin/halt
1 /bin/sync
示例:打印根分區已用空間的百分比(只打印數字)
[root@oldboy ~]# df | grep /$| awk '{print $5}' | awk -F% '{print $1}'
8
找IP地址,而且保存tee
[root@oldboy ~]# ip a | grep "inet "| awk '{print $2}'| tee 1.txt | awk -F\/ '{print $1}'
127.0.0.1
10.0.0.100
[root@oldboy ~]# cat 1.txt
127.0.0.1/8
10.0.0.100/24
[root@oldboy ~]# ifconfig | sed -nr 2's#^.*inet (.*) netmask.*$#\1#gp'| tee 2.txt
10.0.0.100