Linux版本分爲內核版本和發行版本。Linux和unix很是相像,可是也會有區別。
應用程序調用shell,shell調用內核,內核將結果返回給shell,shell將結果返回給應用。操做系統安裝以後都是一個個的文件夾。Linux最終要的是內核和shell,文件系統和應用程序都是須要組織和配置的。
0表示關機。1表示只有一個用戶能夠登錄,就是系統管理員帳號。2表示多個用戶,沒有網絡。3表示多用戶,默認的。4用戶自定義作操做,好比不容許哪些服務啓動。5圖形化界面。6重啓。
ls -a : 顯示隱藏文件。
pwd:顯示當前目錄位置。
File:顯示文件的類型
root@ubuntu:/dev# file vfio
vfio: directory
Touch 文件名,建立文件
Cp:複製文件
root@ubuntu:/yw/df1# cp Dockerfile Dockerfile1
root@ubuntu:/yw/df1# ls
root@ubuntu:/yw# cp -r df1 df2 : 複製目錄
Mv:移動文件
root@ubuntu:/yw/df1# mv Dockerfile ../Dock
Which:查找可執行程序(要在指定的用戶環境變量裏面查找)
root@ubuntu:/yw# which docker
/usr/bin/docker
Linux裏面安裝軟件是有標準的安裝位置的,可執行程序在/usr/bin目錄下面,配置文件在/etc下面,手冊幫助說明在/usr/share/man/man1/下面,
root@ubuntu:/home/yw1989# whereis docker
docker: /usr/bin/docker /etc/docker /usr/share/docker.io /usr/share/man/man1/docker.1.gz
root@ubuntu:/home/yw1989# whereis pass
pass: : 表示沒有
root@ubuntu:/home/yw1989# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
pass是存在的可是whereis沒有找到,whereis和locate都是在查找本身的數據庫,安裝軟件的時候相關的信息就已經寫到數據庫裏面去了,因此whereis和locate速度很是快。
Locate:也是一個查找,比which和whereis都要詳細不少。就是隻要涉及mkdir都找出來, 字符查找。
root@ubuntu:/home# which mkdir
/bin/mkdir
root@ubuntu:/home# whereis mkdir
mkdir: /bin/mkdir /usr/share/man/man1/mkdir.1.gz /usr/share/man/man2/mkdir.2.gz
root@ubuntu:/home# locate mkdir
/bin/mkdir
/usr/bin/gvfs-mkdir
/usr/lib/klibc/bin/mkdir
/usr/share/bash-completion/completions/gvfs-mkdir
/usr/share/man/man1/gvfs-mkdir.1.gz
/usr/share/man/man1/mkdir.1.gz
/usr/share/man/man2/mkdir.2.gz
/usr/share/man/man2/mkdirat.2.gz
/var/lib/docker/overlay2/5f45f46deaffd568fe89881b638f5c3655968bbc52e30634f415f075b3ae43ed/diff/bin/mkdir
/var/lib/docker/overlay2/5f45f46deaffd568fe89881b638f5c3655968bbc52e30634f415f075b3ae43ed/diff/usr/share/man/man1/mkdir.1.gz
Locate的信息比較多,能夠輸出到文件,而後查看:
root@ubuntu:/home# locate pass > 1.txt
root@ubuntu:/home# ls
1.txt yw1989
root@ubuntu:/home# vim 1.txt
有時候有些文件既不是可執行程序,也不是安裝生成的(沒有加入數據庫),是咱們本身建立的,就要用find:
root@ubuntu:/home/yw1989# find / -iname dockerfile (find / -iname *dockerfile*)
/home/yw1989/dockerfile
/home/yw1989/dockerfile/Dockerfile
先使用which,whereis,locate,最後使用find,由於find是查找硬盤的比較慢。
-普通文件
d :目錄
l:符號鏈接文件,目錄能夠作鏈接,文件也能夠作鏈接,實際上它指向另外一個文件,相似於快捷方式,
lrwxrwxrwx 1 root root 30 2月 2 06:46 vmlinuz -> boot/vmlinuz-4.13.0-32-generic
c:字符設備文件,好比硬件信息查看cdrom,軟驅fd,這些設備文件是打不開的,用vim打開也是空的。
root@ubuntu:/dev# ls -l
total 0
crw------- 1 root root 10, 175 2月 8 22:38 agpgart
crw------- 1 root root 10, 235 2月 8 22:38 autofs
輸入重定向基本不使用。
wc是統計文件的信息,統計行數。wc會去讀取這個文件,並統計行數
root@ubuntu:/yw# wc < Dock
10 38 266
進程是和程序有依賴關係的,是程序在執行過程當中產生的一次執行過程。進程是爲了程序在執行過程當中不會產生任何干擾,好比window系統如今是多用戶多任務,好比打開音樂而且寫文檔,要相互不影響,當任務結束後進程就消息了。
程序:代碼的集合。程序再運行的過程當中產生進程,程序是由一個個的進程組成的,能夠產生多個進程。產生幾個進程取決於程序怎麼寫的。進程也是有生命週期的。程序結束的時候進程也會結束。程序大於進程。
killall -u apache //會發現apache進程並無所有被殺死,由於apache的父進程沒有殺掉,會再次派生出子進程。有的程序會派生出父進程和子進程,有的沒有父進程,就是一堆的進程。
kill 3957 //根據root啓動的父進程號來殺
系統啓動就啓動的進程叫作後臺進程,或者叫作守護進程(服務的方式)。除了守護進程還有一個叫作交互進程,交互進程啓動而且裏面的代碼執行完了以後,進程就中止了。
進程啓動:前臺啓動和後臺啓動。後臺啓動就是守護進程啓動,能夠是隨着系統啓動或者是定時器啓動。前臺啓動就是手動執行程序,執行完進程就完了。
ps -ef //顯示進程信息,UID是進程是基於用戶啓動的,pid是進程號,ppid是父進程,父進程是子進程的父親,子進程是父進程派生出來的,
ps aux //也能夠查看進程信息,只是有了cpu使用率內存使用率,
ps aux | grep apache
jobs做業控制是針對用戶自定義的程序,而不是針對系統的守護進程系統服務之類的,jobs是無法操做這些的,好比文件上傳下載,能夠放到後臺去執行,fg 1,bg 1,1是jobs號,來放到前臺和後臺執行。
root@ubuntu:/# sleep 1000
^Z :ctrl + Z暫時中止
[1]+ Stopped sleep 1000 :暫時性中止
root@ubuntu:/# sleep 2000
^Z :ctrl + Z暫時中止
[2]+ Stopped sleep 2000
root@ubuntu:/# ps -ef | grep sleep :sleep任務都有進程的
root 3746 3707 0 22:48 pts/2 00:00:00 sleep 1000
root 3751 3707 0 22:50 pts/2 00:00:00 sleep 2000
root@ubuntu:/# jobs
[1]- Stopped sleep 1000 :後臺是處於中止的狀態
[2]+ Stopped sleep 2000 :後臺是處於中止的狀態
root@ubuntu:/# jobs 1 :顯示第一個進程
[1]- Stopped sleep 1000
root@ubuntu:/# jobs 2 :顯示第二個進程
[2]+ Stopped sleep 2000
root@ubuntu:/# fg 1 :1是jobs號,放到前臺運行,如今又開始運行了
sleep 1000
root@ubuntu:/# bg 1 :jobs1放到後臺執行,sleep就到後臺執行去了
[1]+ sleep 1000 &
root@ubuntu:/# bg 2
[2]+ sleep 2000 &
root@ubuntu:/# jobs
[1]- Running sleep 1000 & :running狀態,且是在後臺運行
[2]+ Running sleep 2000 & :running狀態,且是在後臺運行
因此執行程序的時候能夠放到後臺也能夠放到前臺執行,這就是做業控制命令jobs,一個程序是前臺運行的,ctrl+Z是暫時性中止,經過jobs就能夠看到程序的狀態。
bin和sbin是系統的命令。應用程序的命令不在這裏,應用程序的命令在usr/bin,usr/sbin裏面。若是使用系統自帶的命令好比bash,cat,chmod,cp跟應用軟件是沒有直接關係的,是登錄到系統就能夠直接調用的,不用在意在不在bin和sbin目錄下面,
安裝應用程序都會保存在usr/bin,usr/sbin目錄下面,至關因而系統的額外的第三方應用軟件,有的是能夠直接運行的,有的是要跑到目錄下面執行的。
yum不屬於系統核心的基礎命令,因此yum是一個應用軟件或者是應用工具,只是集成到了發行版中了。
命令是基於命令行的方式帶選項的方式運行,應用程序有的是基於命令行方式,有的是基於圖形界面方式運行的。
root@ubuntu:/usr/bin# ls
yum yum-builddep yum-config-manager yumdownloader yum-groups-manager yuvsplittoppm yuvtoppm
linux中安裝a軟件會要你去安裝b軟件,安裝b軟件的時候要安裝一些依賴庫。而且還有版本問題。yum就是解決了依賴問題。
yum update :升級操做系統
yum search httpd :搜索相關的軟件
yum install httpd :安裝軟件
yum update httpd :升級軟件
yum remove httpd :移除指定的軟件
yum list httpd :列出軟件詳細信息
yum的關鍵之處是要有可靠的軟件倉庫,它能夠是http或ftp站點,也能夠是本地軟件池。
安裝軟件要找一個好點的軟件源,軟件要全安裝要快,
root@ubuntu:/etc/yum/repos.d# ll
Centos-Base.repo Centos-Media.repo Centos-Debuginfo.repo Centos-Vault.repo
Centos-Base.repo裏面有鏡像站點,就是軟件倉庫的地址。
yum/repos.d裏面是軟件倉庫源,要更換yum軟件倉庫源的時候,先把原有的軟件倉庫源作一個備份,而後去國內鏡像下載倉庫文件並放到yum/repos.d裏面去,先要他生成一下緩存,有了緩存後面下載安裝更新軟件都是比較快的,
命令:系統命令,直接運行。應用程序命令,有的直接運行,有的要進入所在目錄運行。
應用程序運行方式:有的命令行運行,有的圖形界面運行。
應用程序:分爲系統應用程序和第三方應用程序。
應用程序的組成部分:普通執行程序文件在/usr/bin。與服務器相關的程序文件/usr/sbin(s是server的簡稱)。應用程序配置文件在/etc。應用程序文檔文件/usr/share/doc。應用程序手冊文件在usr/share/man。
一個應用程序安裝完成以後是有5大部分組成的。安裝完成以後能夠到usr/bin,usr/sbin找到咱們的可執行文件,etc找配置文件。
root@ubuntu:/usr/bin# ls -l | grep docker
-rwxr-xr-x 1 root root 15651672 11月 2 13:45 docker
-rwxr-xr-x 1 root root 43299504 11月 2 13:45 dockerd
-rwxr-xr-x 1 root root 866264 11月 2 13:45 docker-init
-rwxr-xr-x 1 root root 2362184 11月 2 13:45 docker-proxy
root@ubuntu:/usr/sbin# ll | grep docker
root@ubuntu:/usr/sbin#
root@ubuntu:/etc# ll | grep docker
drwx------ 2 root root 4096 2月 9 01:33 docker/
root@ubuntu:/etc# cd docker/
root@ubuntu:/etc/docker# ls
key.json
root@ubuntu:/usr/share/doc# ll -s | grep docker
4 drwxr-xr-x 2 root root 4096 2月 4 02:02 docker.io/
root@ubuntu:/usr/share/doc/docker.io# ls
changelog.Debian.gz copyright README.Debian README.md.gz ROADMAP.md.gz
root@ubuntu:/usr/share/man# ll -s | grep docker
root@ubuntu:/usr/share/man#
linux有許多的發行版,產生了許多的軟件包管理工具,例如redhat/centos的yum,ubuntu/debian的apt-get,suse的yast等
rpm是查詢已經安裝到操做系統的軟件信息。rpm是大多數linux發行版支持的軟件安裝程序,rpm既是一個標準也是一個命令,yum裏面也使用了rpm來安裝,只是yum就不關心依賴了。使用rpm就須要手動處理依賴關係。yum基於RPM包管理,可以從指定的服務器自動下載RPM包而且安裝。
Linux下軟件的格式:軟件名稱.版本號.支持的平臺(i386,x86_64,i586,i686。I是英特爾,386,586,686均可以運行在32位操做系統,x86_64表示64位的安裝軟件),rpm是linux安裝文件之一。