文件目錄:html
/:根目錄java
/root:存放root用戶的相關文件node
/home:存放普通用戶的相關文件mysql
/bin:存放普通用戶的可執行命令linux
/sbin:存放須要具有必定權限纔可使用的命令sql
/mnt:默認掛載光驅(iso)的掛載點mongodb
/etc:存放系統配置相關的文件shell
/var:存放常常變化的文件數據庫
/usr:存放系統的應用程序,好比apt-get install xxx安裝的軟件編程
/tmp:存放臨時文件、日誌文件
/dev:存放硬盤設備信息
/boot:存放Linux操做系統啓動時的引導文件
Linux設備命名規則:
Linux中IDE硬盤,驅動標識符爲「hdx-」,其中hd表示設備類型爲IDE硬盤,x爲盤號,表示第幾塊硬盤(a爲基本盤,b爲基本從屬盤,c爲輔助主盤,d爲輔助從屬盤),「-」表明分區,前4個分區用數字1到4表示,它們是主分區或擴展分區,從5開始就是邏輯分區(擴展分區不能直接使用,需切割出邏輯分區,邏輯分區的數量沒有限制)
Linux中SATA或SCSI硬盤,驅動標識符爲「sdx-」,sd表示設備類型爲SATA硬盤,如:
hda2:表示第一個IDE硬盤上的第二個主分區或擴展分區
sdb5:表示第二個SATA硬盤上的第一個邏輯分區
經過命令fdisk -l:查看Linux系統分區的具體狀況
經過命令df -h 目錄: 查看目錄在哪一個分區和磁盤使用狀況,下圖說明「/home」對應第一塊邏輯分區
掛載點和分區:
在Linux系統裏,「分區」被稱做掛載點,「掛載點」的意思是:把一部分硬盤容量映射成爲一個文件夾,這個文件夾的名字就叫作「掛載點」,所以Linux中只有文件夾形式存在的掛載點,而不會有C盤,D盤,E盤等,Linux中分區(硬盤容量)映射爲文件夾(掛載點)
掛載命令:mount [-參數] [設備名稱] [掛載點]
卸載命令:umount 掛載點
好比:mount /dev/sda1 /test/ 將主分區掛載到test目錄;umount /test/ 卸載
Linux常見掛載點的容量設置:
/boot:100M
swap:交換分區,一般爲物理內存的兩倍
/:根分區,容量儘量大
/home:容量儘量大
Tab:雙擊,命令補全
sudo su:進入root用戶
apt-get install package:安裝程序
apt-get remove --purge softname:卸載並清除配置
./test.bin &:在當前目錄下安裝bin文件,./指當前目錄,&指程序之後臺方式運行
startx:進入Linux圖形界面
shutdown –h now:馬上關機
reboot;shutdown–r now:重啓
dos2unix:Windows文件(\r\n)轉化爲Linux文件(\r)
unix2dos:Linux文件(\n)轉化爲Windows文件(\r\n)
exit:退出
clear:清空
pwd:顯示當前目錄
cd:改變目錄
cdnull:切換到當前用戶(如zzjie)的主目錄
ls:列出文件和目錄
ls -a:顯示隱藏文件
ls -l:顯示長列表格式
ll:顯示文件詳細內容
mkdir:創建目錄
rmdir:刪除空目錄
touch:創建空文件
cp:複製
cp-r 文件夾 目標目錄:拷貝文件夾
scp:在Linux主機間複製文件
scplocal_file remote_username@remote_ip:remote_folder
scplocal_file remote_username@remote_ip:remote_file
scplocal_file remote_ip:remote_folder
scplocal_file remote_ip:remote_file
scp–r:複製文件夾
scp:從遠程到本地同理
rsync:遠程數據同步
rsync–option src dest
rsync–option src remote_username@remote_ip:remote_file
rsync–option src remote_username@remote_ip:remote_fodler
mv:移動文件和改文件名
rm:刪除文件和目錄
rm-rf:遞歸、強制刪除目錄和內容,fr:recursive force
ln:連接,指向源文件
ln-s 源文件 目標文件:目標指向源文件
more:分頁顯示文件內容,下一頁:空格 上一頁:Shift + PageUp
less:分頁顯示文件內容
grep:在文本中查詢內容
grep–n「xxx」 Hello.java,其中-n顯示行數
|:管道命令
在Linux系統中,| 就是管道,把上一個命令的結果交給 | 後面的命令處理,好比:
ls/etc/ | more:列出etc目錄內容,分頁顯示
find/ -name *.html | grep bookmark:在根目錄,按照文件名*.html查找,再在文件中查找bookmark
find:搜索文件(夾)
1)在特定的目錄下搜索並顯示指定名稱的文件(夾)
find/ -name Hello.java:從根目錄,按照文件名查找Hello.java
2)搜索一段時間內被存取、變動的文件(夾)
findhome/ -amin -10:10分鐘內存取的文件或目錄
findhome/ -atime -10:10小時內存取的文件或目錄
findhome/ -cmin -10:10分鐘內更改過的文件或目錄
findhome/ -ctime +10:10小時前更改過的文件或目錄
3)搜索指定大小的文件
findhome/ -size +10k:查找home下,大小爲10k的文件
>:管道定向命令,好比:
grep「main」-nam Hello.java > 1.bak:結果輸送到1.bak保存起來(覆蓋)
grep「main」-nam Hello.java >> 1.bak:結果輸送到1.bak保存起來(添加到文件末尾)
>filename 2>&1:「>&」is the syntax to redirect a streamto another file descriptor,「&」indicates that what follows is a file descripter and not a file,0 is stdin,1 is stdout,2 is stderr
chown:改變文件(夾)的全部者
chownDave hello.c
chownDave:Dave hello:改變文件(夾)的屬主和屬組
chgrp:改變文件(夾)所在組
chgrpDave hello.c
chmod:改變文件(夾)的權限,好比:chmod 777 Hello.java
jobs:查看全部的做業列表
Linux用戶(組)管理命令(只有root用戶能添加用戶)
useradd用戶名:添加用戶
useradd[-u uid] [-g group] [-d home] [-s shell]user_name:添加用戶
useradd–m 用戶名:自動創建用戶的登入目錄
useradd–d 用戶名:指定用戶登錄時的起始目錄
passwd用戶名:給用戶設密碼
userdel用戶名:刪除用戶
userdel–r 用戶名:刪除用戶和用戶相關文件
userdel–r 用戶名:刪除用戶和戶主目錄
groupadd組名:添加用戶組,
useradd-g 組名 用戶名:建立用戶,並指定組,該命令還能用於改變用戶所在組
whoam i:顯示用戶信息
Note:
查看linux中全部用戶信息:cat/etc/passwd | more,假如顯示以下:
along:x:1001:1001::/home/along:/bin/sh
對應格式:用戶名:密碼:用戶id:組id::用戶目錄:用戶使用的shell解析器
root用戶查看用戶密碼:cat /etc/shadow | more
root用戶查看羣組信息:cat /etc/group | more
查看linux中全部組的信息:cat /etc/group | more
mount [-參數] [設備名稱] [掛載點]:掛載設備
umount 掛載點:卸載設備
fdisk -l:查看Linux系統分區的具體狀況
df -h 目錄:查看目錄在哪一個分區和磁盤使用狀況
env:查看操做系統的環境
history:顯示歷史命令
history10:顯示最近使用的10個命令
!5:執行歷史編號爲5的命令
!ls:執行最後一次以「ls」開頭的命令
ping:ping通網絡
tracepath:trace網絡節點
route:顯示路由表
ifconfig:查看ip狀況
ifconfigeth0 xxx.xxx.xxx.xxx:更改設備的IP地址
ifconfigeth0 x.x.x.x netmask x.x.x.x. up:配置eth0 IP地址和子網掩碼,同時激活設備
hostname name:更改主機名稱
netstat:顯示網絡統計信息
netstat–anp:按端口顯示網絡信息,並顯示進程號
date:顯示系統時間
date月月日日時時分分年年年年.秒秒
cal 月 年:顯示月曆
ps -aux:顯示正在運行的進程
ps–ef | grep zzjie:顯示父進程ID(PPID)
ps–aux | grep zzjie:顯示全部包含其餘使用者的進程
-a:顯示全部用戶的全部進程
-u:按用戶名和啓動時間的順序來顯示進程
-x:顯示沒法控制終端的進程
TTY:終端 「?」是守護進程,deamon無終端
VSZ:佔用虛擬內存大小
RSS:佔用內存大小
ps–axf:查看進程樹
ps–axm:列出線程
pspid:顯示pid進程
pstree:顯示即進程樹
top:動態監控進程
時間系統已啓動時間 用戶數 當前系統負載狀況 …殭屍進程
96.0id:CPU資源空閒比例;內存和Swap
監視特定用戶:輸入u,輸入用戶名,回車
終止指定進程:輸入k,輸入要結束的進程號
指定系統狀態更新時間:top -d 10:10秒更新1次
top運行中能夠經過 top 的內部命令對進程的顯示方式進行控制:
l:開啓或關閉第一部分第一行top信息
t:開啓或關閉第一部分第二行Tasks和第三行Cpus信息
m:開啓或關閉第一部分第四行Mem和第五行Swap信息
N:以PID的大小順序排列進程
P:以CPU佔用率大小排列進程
M:之內存佔用率大小排列進程
q:退出top
top–p pid:只監控pid線程
vmstat:Linux系統監控工具,是查看虛擬內存vm使用情況的工具
在Linux內存管理中,主要是經過「調頁Paging」和「交換Swaping」,Paging:將內存中不常使用的頁面換到磁盤上,Swaping:將整個進程交換到磁盤上
Page-out:分頁寫入磁盤;Page-in:分頁回到內存
vmstat2 10:
r:run queue運行隊列中進程數量,超過CPU數目,出現CPU瓶頸
b:blocked等待IO的進程數量,阻塞的進程
swpd:當前使用的虛擬內存KB數,若是大於0,表示機器內存不足
free:當前空閒的物理內存KB數
buff:緩衝的內存大小
cache:緩存的內存大小
si:swapin 每秒從交換區讀入虛擬內存的大小,若是大於0,表示物理內存不夠用
so:swapout 每秒從虛擬內存寫入交換區的大小,若是大於0,表示物理內存不夠用
bi:blockin 每秒從塊設備讀入內存的數據總量(讀磁盤)
bo:blockout 每秒從內存寫入塊設備的總量(寫磁盤)
in:每秒中斷數
cs:每秒上下文切換數
us:user 用戶進程執行時間
sy:system系統進程執行時間
id:idle cpu空閒時間
wa:wait cpu等待IO時間
經過/proc/cpuinfo:查看CPU性能
grep‘model name’/proc/cpuinfo:查看CPU和CPU核數
jstack:
jps:查出java進程的pid
top –p pid:觀察進程狀況
Shift + h:顯示該進程的全部線程
將線程id轉化爲16進程,好比線程id 3720 == 0x7d0,注意小寫
jstack pid | grep -A 10 0x7d0:查詢具體線程的狀態,基本能夠定位程序的問題所在
須要的時候再瞭解其餘JVM監控工具
kill 進程號:終止進程,本質是協商退出,並非強制退出
kill-9(KILL) 進程號:發送SIGKILL信號,強制終止進程
killall進程號:終止進程和子進程
kill–STOP pid:發送SIGSTOP信號,將後臺進程暫停
kill–CONT pid:使後臺暫停的進程恢復運行
kill–l:list available signals
kill信號說明:
2)SIGINT:^C sends a SIGINT to all the processes in theforeground process group. To do the equivalent with kill,kill –SIGINT pid(OS-level concept)or to the job,kill –SIGINT %(shell-level concept,the pipeline ended with&)
man command:命令手冊
info command:在線查看命令文檔
輸入/:Gegexp search
stty –a:get all the terminal controlcharacter assignments
好比,intr = ^C,susp = ^Z等
free -m:查看內存使用狀況
內存描述文件:cat /proc/meminfo:機器的內存使用狀況
/proc/pid/maps:顯示當前進程所佔用的虛擬地址
/proc/pid/statm:進程所佔用的內存
Linux空閒內存:free+ buffers + cached
export:設置或顯示環境變量(臨時)
exportPAHT=&PATH:&HOME/bin:root/test:設置PATH環境變量
若是將export寫入:/etc/profile或/etc/bashrc等全局,那麼針對全部用戶,環境變量永久生效
若是將export寫入:/home/zzjie/.bashrc或.bash_profile,那麼僅對zzjie登錄的用戶環境變量有效
echo$PATH:查看PATH環境變量
/etc/profile:爲系統的每一個用戶設置環境信息,當用戶第一次登錄時,該文件被執行
/etc/bashrc:爲每一個運行bashshell的用戶執行此文件,當bash shell被打開時,該文件被讀取
/zzjie/profile:zzjie用戶的環境設置
/zzjie/bashrc:zzjie用戶的bash shell配置,給bash初始化,如bash代碼補全,bash別名等
/zzjie/bash_logout:當用戶每次退出bash shell時,該文件被執行
alias:指定別名
aliasdump=’mysqldump –u root –p db > /home/date.bak’:指定數據庫備份操道別名dump
aliassubl="/home/zzjie/Downloads/Sublime\ Text\ 2/Sublime\ Text\2/sublime_text"
shell通配符:* ?
reptyr:reptyr is a utilityfor taking an existing running program and attaching it to a new terminal
iptraf:網絡測量工具
iptraf–g:
iptraf–d eth0:
Notes:命令最終在linux的內核執行,但先傳給shell解析器,再傳給Kernel
llHello.java和test文件夾顯示文件詳細信息
-rw-rw-r-- 1 zzjie zzjie 96 7月 1322:34 Hello.java
drwxrwxr-x 2 zzjie zzjie 4096 7月 1511:53 test/
權限說明:r:可讀,用4表示;w:可寫,用2表示;x:可執行,用1表示
文件類型:
分析:-rw-rw-r--;drwxrwxr-x
第一部分-表示Hello.java是普通文件,d表示test是文件夾;第二部分rw-和rwx表示文件(夾)全部者zzjie對該文件具備的權限;第三部分rw-和rwx表示文件(夾)所在組對該文件的權限;第四部分r--和r-x表示其餘組的用戶對該文件(夾)的權限
zipxxx.zip 文件1 文件2 …:將多個文件壓縮
zip–r xxx.zip 目錄 文件1 文件2:將目錄下全部文件和文件夾,文件1,文件2壓縮
zip–m xxxx.zip 文件:向壓縮文件xxx.zip中添加文件
unzip–od /home/zzjie xxx.zip:把xxx.zip文件解壓到/home/zzjie
-c:--create
-r:--apend
-t:--list
-u:--update
-x:--extrate
-f:--file
-v:--verbose
-z:--gzip,--gunzip
-j:--bzip2
-z:--compress,--uncompress
壓縮:
tar –cf archive.tar 1.jpg:將1.jpg文件壓縮打包成tar文件
tar –uf archive.tar 1.jpg:更新原來tar包中的1.jpg文件
tar –cvfarchive.tar *.jpg:將目錄裏全部jpg文件壓縮
tar –czf archive.tar.gz*.jpg:將目錄裏全部jpg文件打包成jpg.tar,再用gzip壓縮,生成一個gzip壓縮過的包,命名爲archive.tar.gz
tar –cjf archive.tar.bz2*.jpg:將目錄裏全部jpg文件打包成jpg.tar,再用bzip2壓縮,生成一個bzip2壓縮過的包,命名爲jpg.tar.bz2
tar –cZfjpg.tar.Z *.jpg:將目錄裏全部jpg文件打包成jpg.tar,再用compress壓縮,生成一個compress壓縮過的包,命名爲jpg.tar.Z
解壓:
tar –xvffile.tar:解壓tar包
tar -xzvf file.tar.gz(file.tgz):解壓tar.gz或者tgz包
tar -xjvf file.tar.bz2:解壓 tar.bz2包
tar –xZvffile.tar.Z:解壓tar.Z包
gunzip(gzip –d) *.gz:解壓gz包
bunzip(bzip –d) *.bz2:解壓bz2包
uncompress *.Z:解壓Z包
源文件安裝:
./configure(--prefix=path):針對當前系統,配置好安裝參數(配置軟件安裝目錄)
make:將源代碼文件編譯爲二進制文件
makeinstall(runas root):將編譯好的二進制文件安裝到系統中
結合:& ./configure && make && sudo make install
rpm就是軟件包管理工具,能夠安裝、刪除、更新以rpm包形式發佈的軟件,相似Windows裏面的「添加/刪除程序」,一般包括Binary和Source兩種rpm包
rpm經常使用命令:
rpm-q 軟件名 //查詢軟件是否安裝
rpm-qa | grep samba //在全部已經安裝的軟件包中查找samba
rpm-ql samba //查詢rpm包安裝位置
rpm-qi samba //查詢rpm包的信息
對未安裝軟件包的查看:
rpm–qpi file.rpm //查看一個軟件包的用途、版本
rpm–qpl file.rpm //查看一個軟件包所包含的文件
rpm-ivh file.rpm //安裝rpm包並顯示進度
rpmivh file.rpm --nodes --force:強制安裝,忽略依賴關係
rpm-ivh --relocate /=/opt/gaim gaim-1.3.0-1.fc4.i386.rpm //指定安裝目錄
rpm-Uvh --oldpackage gaim-1.3.0-1.fc4.i386.rpm //新版本降級爲舊版本
rpm–e --nodeps file.rpm //強制刪除rpm包
Shell基本概述:
殼(Shell)保護內部的核(Kernel),Shell是一種具有特殊功能的程序,是用戶和Linux Kernel間的接口,爲了屏蔽內核的複雜性,爲了保護內核以避免用戶誤操做形成損害,在內核的周圍建了一個外殼,用戶向shell提出請求,shell解釋並將請求轉發給內核,好比ls /home命令,首先由shell解析,最終轉發給內核,有內核處理
Shell的自己就是一個解釋型程序設計語言,shell程序設計語言支持絕大多數在高級語言中能見到的程序元素,如函數、變量、數組、程序控制結構等,任何在提示符中能鍵入的命令都能放到一個可執行的shell程序中,本質上,shell腳本:是一個文本文件,是命令的集合,有執行的權限,執行方式(./script.sh)
Shell種類有:Bourne shell(sh),Korn Shell(ksh),C shell(csh),BourneAgain Shell(bash)等,經過echo$SHELL查看當前shell
Shell的使用:
1)用戶登錄後自動執行的shell腳本文件:
.bashrc位於主目錄下,執行系統的腳本/etc/bashrc:配置系統基本數據
.bash_profile位於主目錄下,執行系統的腳本/etc/profile:配置系統環境變量
(好比PATH,CLASSPATH等都能在這裏配置)
2)在/home/zhengzj目錄下有用戶的環境變量:.bashrc、.bash_profile等
在root用戶下添加crontab定時計劃任務(修改/etc/crontab文件)
時間格式:* * * * * 對應:分鐘 小時 月 年 星期,好比:
0 2* * * root date >> /home/date:天天凌晨2:00,root用戶,待執行命令
crontab調度多個任務:
1)vi /etc/crontab中寫多個命令
2)shell編程:將多個任務組織到sh文件中,再寫入/etc/crontab文件,好比:
0022 * * * root /home/xx/mysql_backup.sh:每晚22:00備份mysql數據庫
crontab-r:終止任務
crontab–l:列出當前調度任務
一、臨時配置:重啓機器,配置消失
ifconfigeth0 x.x.x.x netmask x.x.x.x. up:配置eth0 IP地址,同時激活設備
route adddefault gw x.x.x.x:配置網關
hostnamexxxx:配置主機名
dhcclienteth0:DHCP動態獲取IP
二、修改配置文件(Google):
Ubuntu網絡配置涉文件:
/etc/network/interfaces:網絡接口配置,包括:IP地址、子網掩碼、網關等
/etc/resolv.conf:DNS服務器設置
/etc/hostname:主機名設置
/etc/hosts:域名解析映射
/etc/hosts.allow:IP訪問容許規則
/ect/hosts.deny:IP訪問禁止規則
注意:修改網絡配置文件後,要重啓網絡接口:/etc/init.d/networking restart
Linux vi編輯器
1)vi Hello.java
2)輸入i:進入到插入模式
3)輸入esc:進入命令模式
4)輸入冒號:
5)wq:保存退出或者q!:退出不保存
在Linux上創建CookieService和TaskService,而且運行爬蟲:
目錄說明:
設置CLASSPATH:export CLASSPATH=.:/home/zzjie/service/lib/je-5.0.73.jar
或者修改vi /home/zzjie/.bashrc文件(用戶級別):
進入src目錄下,編譯源文件:
$javac com/crawl/common/SystemProperties.java
$javac hhf/crawl/master/InitLoadTask.java
進入src目錄下,運行InitLoadTask.class文件:
$java hhf/crawl/master/InitLoadTask:
此時,任務數據庫創建完畢
PS:保證文件的目錄都正確,每次修改源文件都須要從新編譯
————————————————————————————————————
啓動Cookie服務和Task服務:
問題:要導入的Jar包太多,如何處理?
exportCLASSPATH=.:$CLASSPATH:/home/zzjie/service/lib/log4j-1.2.17.jar
進入src目錄下,編譯源文件:
$javac hhf/crawl/master/MasterServer.java
進入src目錄下,運行程序:
$java hhf/crawl/master/MasterServer -start CookieService
$ javahhf/crawl/master/MasterServer -start UserTaskService
啓動服務成功:
查看service.log:ss
————————————————————————————————————
下面運行爬蟲程序:
在/home/zzjie目錄下創建distributed_crawler文件夾:
將爬蟲程序打包成Jar包:
MANIFEST.MF文件以下:
必定要遵循固定的格式
運行jar文件:
$ java-Dfile.encoding=utf-8 -jar distributed_crawler_test.jar
(注意檢查配置文件是否都已經正確)
程序正常啓動:
查看日誌文件:
登錄日誌:
Cookie和Task分配日誌:
微博下載日誌:
能夠看出多個線程同時爬取微博
查詢mongodb:
所以,多線程爬蟲已經正常工做
————————————————————————————————————
服務器後臺運行:
服務器後臺運行cookie和task服務:使用nohup和&,而且重定向控制檯輸出到文件
服務器後臺運行爬蟲:
nohup:讓提交的命令忽略hangup信號
「> filename 2>&1」來更改缺省的重定向文件名,一般配合「&」使命令成爲後臺運行的任務
catfilename;cat filename | more;cat filename | less查看文件
舉例:
nohup java-Dfile.encoding=utf-8 -jar distributed_crawler.jar > log/44 2>&1&
nohupcommand &:控制檯logout,進程仍然運行,起到守護進程的做用,脫離終端的控制
原理說明:
進程組(process group):每一個進程組有惟一的GID,即進程組長進程的ID
會話期(session):有惟一一個會話期首進程(session leader),會話期ID爲首進程ID,會話期能夠有一個單獨的控制端,與控制終端鏈接的會話期首進程叫作控制進程
當網絡斷開或者終端窗口關閉時,終端接口將掛斷信號送給控制進程(會話期首進程),控制進程收到SIGHUP信號退出,使得會話期內其餘進程退出
&:在結尾加上「&」使命令成爲做業,並放入後臺運行,能經過jobs查看做業狀況
setsid:run a program in a new session
咱們知道若是事先在命令前加上nohup或者setsid就可避免HUP信息的影響,但若是咱們未加任何處理就已經提交了命令,該如何補救才能讓它避免HUP信號的影響:
disown:detachthe process from its parent(the shell)
$ disown –h jobspec:使某個做業忽略HUP信號
$ disown –ah:使全部做業都忽略HUP信號
$ disown –rh:使正在運行的做業忽略HUP信號
disown示例1:若是提交命令時未使用&將命令放入後臺運行
若是沒有把命令當作做業來運行,能經過CTRL-z:將當前的進程掛起到後臺暫停運行,而後經過jobs查看它的做業號,用fg(foreground)將掛起的進程從新放回前臺,bg(background)將掛起的進程放在後臺繼續運行,這樣咱們就能在一個終端內靈活切換多個任務,可是若是掛起會影響進程的運行結果,得慎用此方法(使用fg和bg可以在一個終端內靈活的切換做業)
disown示例2:若是提交做業時已經使用&命令放入後臺運行
咱們已經知道如何讓進程避免HUP信號的影響,但若是有大量這種命令須要穩定在後臺運行,如何避免對每條命令都作這樣的操做?
screen:
Screen是一個能夠在多個進程之間多路複用一個物理終端的窗口管理器,screen中有會話的概念,用戶能夠在一個session會話中建立多個screen窗口(^a + a),在每個screen窗口中就像操做一個真實的SSH鏈接窗口那樣:
$ screen:登錄Linux,輸入screen命令,建立screen會話,同時建立第一個screen窗口(^a + w)
(子進程、父進程的關係很是清楚)
screen還有更高級的功能,咱們能夠在不中斷screen各窗口中程序的運行而暫時斷開(detach)screen會話,並在隨後時間從新鏈接(attach),從新控制各窗口中運行的程序
好比,咱們在一個screen會話中打開4個窗口(/bin/bash),輸入^a + d ,斷開會話:
看出screen會話中保存了4個screen窗口,screen會話首進程父進程爲1
若是退出screen窗口,當只剩餘那一個窗口時,screen會話結束,不然回到上一個窗口
在一個screen窗口中輸入screen命令,至關於^a +c:建立一個新窗口
(注意到給screen發送命令使用了特殊的組合鍵:^a)
$ screen –ls:列出全部會話
$ screen –rsession_name:從新鏈接指定的會話
$ screen –dmSsession_name:創建一個處於斷開模式下的會話
$ screen –wipe:同list,但刪除那些沒法鏈接的會話
當咱們用「-r」鏈接到screen會話後,咱們就能夠在這個僞終端裏執行各類操做,不再用擔憂HUP信號會對咱們的進程形成影響,也不用給每一個命令都加上「nohup」或者「setsid」
緣由:
未使用screen時新進程的進程樹:
使用screen後新進程的進程樹:
screen經常使用鍵綁定:
總結:
nohup/setsid/&:臨時須要
disown:補救當前已經在運行了的做業
screen:大批量操做命令
1)samba服務器:實現Windows和Linux文件共享
2)ssh:Windows客戶端遠程登陸Linux服務器,而且上傳、下載(sftp)文件到Linux
下圖是Windows用戶遠程登陸到Linux服務器:
3)Xshell:集成ssh客戶端