linux 命令2

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,whereis,locate,find

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做業控制是針對用戶自定義的程序,而不是針對系統的守護進程系統服務之類的,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就能夠看到程序的狀態。

yum安裝

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# 

RPM

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是英特爾,386586,686均可以運行在32位操做系統,x86_64表示64位的安裝軟件),rpm是linux安裝文件之一。

相關文章
相關標籤/搜索