Linux——系統、命令、shell、編譯

操做系統的功能:
  存儲管理、進程和處理機管理、文件管理、設備管理、用戶接口linux

[mengqc@localhost ~]$ 是shell主提示符。其中正則表達式

  •  「mengqc」表示當前用戶名
  •  「localhost」是默認的主機名
  •  「~」 表示默認用戶主目錄
  •  「$ 」 表示當前用戶是普通用戶。對於超級用戶來講,該位置出現的標示是「# 」。

linux操做系統經常使用命令shell

ls:查看當前目錄下的文件夾數據庫

  • -a:列出隱藏文件,-A:隱藏. ..文件
  • -l :詳細信息
  • -t:修改時間排序
  • -n:uid gid
  • -r:倒序排列
  • -s:打印每一個文件以block爲單位打印大小
  • ll=ls -l

data:顯示時間apache

cal:顯示日曆windows

passwd:更改密碼數組

cp -f file1 file2:複製文件安全

who:顯示誰在登陸以及時間bash

  • $:普通用戶。
  • #:root。

pwd:查看當前路徑。網絡

man ls :ls的幫助文檔。

>;輸出重定向,若是一個文件存在,刪除後從新創建一個文件。

>>:輸出重定向,若是一個文件存在,則追加到原文件末尾。

cat:打開一個文件

history:打開鍵入的命令列表。

  打開後用!+ 編號 便可執行;!!:運行上一個命令;!-n:運行倒數第n個個命令;!cmd:運行cmd開頭的命令。

當敲長命令時,輸入幾個字母+tab鍵,能夠實現移動補充。

linux用戶和組

  介紹:登陸用戶是進入Linux的途徑,系統中將用戶看做是32位的二進制數,便是一個userID,用戶信息存儲在/etc/passwd中,root的ID是0;出於安全考慮,顯示密碼的第二個字段顯示爲X,密碼存儲在/etc/shadow文件中

passwd文件:
  用戶名|x|用戶id|用戶2所在組id|備註信息|家|登陸shell

  • 通常用戶:id>=500
  • 超級用戶:id=0
  • 系統用戶:id<500

shadow文件:
  用戶名:加密密碼:最近更改密碼的日期:密碼不可更改的天數:密碼更改期限前的警告時間:密碼過時的寬限時間:帳號失效日期:保留字段
  注:數字是距離1970.1.1多少天到如今

添加用戶useradd、adduser

  • useradd username:添加用戶
  • passwd username:更改用戶密碼

  注:此命令實現了1.給用戶分配最大的id號 二、在passwd文件中添加一行 三、在/home/下建立用戶的家 四、在/etc/group/下添加用戶的組

修改用戶usermod

  • -c <備註>   修改用戶賬號的備註文字。comment
  • -d <登入目錄>  修改用戶登入時的目錄。
  • -e <有效期限>  修改賬號的有效期限。
  • -f <緩衝天數>  修改在密碼過時後多少天即關閉該賬號。
  • -g <羣組>   將用戶只存在到新的組
  • -G <羣組> 將用戶再加到別的次要組上
  • -l <賬號名稱>  修改用戶賬號名稱。
  • -L   鎖定用戶密碼,使無效。
  • -s   修改用戶登入後所使用的shell。
  • -u   修改用戶ID
  • -U   解除密碼鎖定。
  • 刪除用戶userdel
  • -r 刪除用戶全部信息
  • -f 刪除用戶主目錄和郵箱 su命令:
    su root:切換用戶。
    注:普通用戶向根用戶和其餘用戶須要輸入口令,超級用戶向普通用戶跳轉不須要輸入口令。

用戶組用戶組文件的路徑在/etc/group/下,用戶組也有/etc/gpasswd

group文件內容:groupname:密碼:groupID:用戶列表

gshadow文件內容:gname:password:管路員列表:成員列表

添加用戶組 groupadd

  • groupadd 注:添加用戶組;
  • groupdel 注:刪除用戶組;
  • groupmod 注:修改用戶組信息

  -n 修改用戶組名
groups 注:顯示用戶所屬的用戶組
grpck grpconv 注:經過/etc/group和/etc/gshadow 的文件內容來同步或建立/etc/gshadow ,若是/etc/gshadow 不存在則建立;
grpunconv 注:經過/etc/group 和/etc/gshadow 文件內容來同步或建立/etc/group ,而後刪除gshadow文件;
gpasswd -a 向名爲 group 的組中添加用戶 user
-d 從名爲 group 的組中移除用戶 user。

注:這裏有關組安全的問題須要注意,組密碼是當組中大於一個用戶時,在組安全問題中被提出的,細節以後本身好好看看。

文件和目錄:

普通文件:文本文件 二進制文件 數據文件

目錄文件:I結點/文件名成對存在

i結點:存儲文件相關的屬性

文件名:存儲的是一個字符串,標識該文件

如此作的目的是文件瘦身

設備文件:Linux把設備看做文件,實現設備無關性

符號連接文件:快捷方式

文件控制塊:FCB,在linux中就是I結點

Linux樹狀目錄結構

  • bin:目錄包含二進制(binary)文件的可執行程序。
  • sbin:目錄中存放用於管理系統的命令。:root權限
  • boot:用於存放引導系統時使用的引導文件,有鏡像文件等
  • etc:linux系統配置文件,
  • systemd:配置文件目錄
  • hosts:ip與名字的對照表
  • services:定義系統服務與端口的對應關係
  • profile:系統全局環境變量配置文件
  • root:目錄是超級用戶的目錄。
  • dev:設備文件
  • lost+found:目錄中存放系統非正常關閉時正在處理的文件,以便下次系統啓動時予以恢復。
  • home:目錄是用戶起始目錄的基礎目錄。一般,用戶的主目錄就保存在該目錄中。
  • lib:目錄中保存程序運行時使用的共享庫。
  • mnt:目錄中存放安裝文件系統的安裝點。掛載點。linux能夠訪問機器上的全部分區,只要在受權的狀況下
  • /run和/media目錄使用來自動掛載的目錄
  • proc:目錄其實是一個虛擬文件系統。
  • tmp:目錄用於存放程序運行時生成的臨時文件。
  • usr:目錄中包含了多個子目錄,其中保存系統上一些最重要的程序,可供全部用戶共享。
  • lib64:64位操做系統的函數庫
  • src:核心源代碼的位置
  • sbin:超級用戶才能夠執行的命令:如磁盤修復等
  • bin:用戶可執行的命令
  • var:包括系統正常運行時要改變的數據。
  • log:存放各類應用程序的日誌信息

絕對路徑名:從/下開始,即root目錄下實現絕對目錄
相對路徑名:./表示當前目錄下 ../表示父目錄

工做目錄:用戶的當前目錄
主目錄:註冊用戶是建立的文件時的總目錄,在/home下

改變工做目錄
① 將當前目錄改到/home/liuzh:
$ cd /home/liuzh
② 將當前目錄改到用戶的主目錄:
$ cd 或 cd ~
③ 將當前目錄向上移動兩級:
$ cd ../..
④ 進入cauc的主目錄:
$ cd ~cauc
⑤ 返回剛纔的目錄,即上一個工做目錄
$ cd —

ls命令列出指定目錄的內容

chmod命令
只有文件主或超級用戶root纔有權用chmod命令改變文件或目錄的存取權限。

umask命令:
文件的權限是由666-掩碼實現的

cp
-a:保留組信息
-r :複製子目錄下的文件
-i:交互式複製
-s:複製爲符號連接文件,注意,這裏是賦值爲符號連接文件

rm
-i:交互式刪除
-rf:所有刪除

mv 文件或目錄 文件或目錄

mkdir
-m 700 directory
-p 若是上層目錄不存在也進行建立

rmdir
-p :刪除此目錄以上的全部空目錄

cat
-n 顯示行號

more
-c 清屏
-10 顯示10行
-d 顯示百分比
/字符串:向下搜索字符串

less 分屏顯示文件

group
-g:添加用戶到用戶組
-ag:追加用戶

head
-5 :顯示前5行
-v:顯示文件名
--bytes=-100 :顯示最後一百個字節其餘的全部內容

tail
-5 :顯示最後5行
-n +10 :顯示第10行開始後的全部內容
-c 100 :顯示最後一百個字符

gzip
-r:遞歸壓縮
-dv :解壓文件而且顯示百分比

uzip :解壓zip文件

tar:
-cvzf 歸檔名.tgz 被歸檔的文件
-xvzf .tgz 解壓

注:硬連接和軟連接的區別是什麼???

硬鏈接:建立一個文件的時候,首先在磁盤上申請一塊空間,而後在目錄文件下建立一個文件,這裏面存儲的是文件名+I結點號,這個文件指向內存中建立的i結點,硬鏈接的話,在目錄上新建了一個文件,可是他們指向了同一個i結點,因此她們的i結點號是相同的。

軟連接:建立了一個連接文件,是實實在在的一個屬性爲l的文件,系統分配新的節點號,磁盤中建立一個文件,文件內容是被連接文件的文件目錄,這時候,若是刪除被連接文件,是刪除了文件目錄下的文件名,而軟連接的內容就是定向到這個文件下,因此刪除文件後,軟連接就找不到了。軟鏈接的權限是777。

eval:
將後面的命令,進行相應的變量替換和命令替換,替換的結果做爲一個新的命令行輸出,並執行
例:
[root@localhost etc]# echo $cmd
echo a
[root@localhost etc]# eval $cmd
a

expr
例子: `expr $1 + 1` 注意:運算符先後有空格
[root@localhost /]# set 1
[root@localhost /]# `expr $1 + 1`
bash: 2: command not found
[root@localhost /]# echo `expr $1 + 1`
2

awk
模式:awk 'BEGIN { command } Pattern{ command } END{ command }'

每一行的數據複製給$0 ;一行內空格分開的值從$1開始一次

echo -e "1\n2" | sort -rn | awk '{ x+=$0 ;} END{ print x}'

echo
-e:激活轉義字符

  • sort :對輸入流進行行排序
  • -b:忽略每行前面開始出的空格字符;
  • -c:檢查文件是否已經按照順序排序;
  • -d:排序時,處理英文字母、數字及空格字符外,忽略其餘的字符;
  • -f:排序時,將小寫字母視爲大寫字母;
  • -i:排序時,除了040至176之間的ASCII字符外,忽略其餘的字符;
  • -m:將幾個排序號的文件進行合併;
  • -M:將前面3個字母依照月份的縮寫進行排序;
  • -n:依照數值的大小排序;
  • -o<輸出文件>:將排序後的結果存入制定的文件;
  • -r:以相反的順序來排序;
  • -t<分隔字符>:指定排序時所用的欄位分隔字符;

mkfs

  • -t<文件系統類型>:指定要創建何種文件系統;
  • -v:顯示版本信息與詳細的使用方法;
  • -V:顯示簡要的使用方法;
  • -c:在製作檔案系統前,檢查該partition是否有壞軌

進程管理

  • Ss:有子進程
  • S<:優先級高
  • SN:優先級低
  • SR+:

對於併發的程序,經過fork();生成子進程後,資源是兩個進程之間各賦值了一份,因此兩個進程之間並不影響各進程值的結果。

Linux shell腳本變量的使用

shell有兩種執行命令的方式:

  • 交互式(Interactive):解釋執行用戶的命令,用戶輸入一條命令,Shell就解釋執行一條。
  • 批處理(Batch):用戶事先寫一個Shell腳本(Script),其中有不少條命令,讓Shell一次把這些命令執行完,而沒必要一條一條地敲命令。

咱們要知道bash和sh不是一個東西,咱們須要瞭解,bash徹底兼容sh,也就是說,用sh寫的腳本能夠不加修改的在bash中執行

編寫shell的通常習慣:
   功能;做者;版本信息;歷史記錄;特殊的命令用絕對路勁表示;預先申明和設置腳本運行時的環境變量;

sheel的變量類型:

  • 局部變量:僅僅用於建立的shell中
  • 環境變量:由子shell繼承
  • shell變量:shell變量是由shell程序設置的特殊變量。shell變量中有一部分是環境變量,有一部分是局部變量,這些變量保證了shell的正常運行

shell用$來解析shell變量;
變量賦值 :=;=兩邊不能有空格

建立變量:shell變量直接定義;環境變量是先定義一個shell變量,而後將export轉換爲環境變量

列出環境變量:set

列出已經被導出爲環境變量的變量:env

export:實現了將父進程的私有數據轉到公有區,當運行一個腳本的時候,其實是進入了一個新的shell環境,也能夠說是一個新的進程,這個進程由父進程建立。當export後,就能夠將公有區的數據給子進程再複製一份了,注意這不是fork。

shell中一些比較特殊的變量:
特殊變量含義
$0
當前腳本的文件名
$n
傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。
$#
傳遞給腳本或函數的參數個數。
$*
傳遞給腳本或函數的全部參數。
$@
傳遞給腳本或函數的全部參數。被雙引號(" ")包含時,與 $* 稍有不一樣,下面將會講到。
$?
上個命令的退出狀態,或函數的返回值。
$$
當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。

注:這些變量咱們留在這裏備份,有用到就能夠查。

HOME:用戶主目錄的全路徑名。如/home/myname
LOGNAME:即用戶註冊名
PWD:當前工做目錄的路徑。
PATH:shell查找命令的路徑(目錄)列表,各個目錄用冒號(:)隔開。 用戶能夠設置它: $ PATH=$PATH:$PWD
PS1:shell的主提示符。 $ PS1="$LOGNAME> "
SHELL:當前使用的shell。一般,它的值是/bin/bash。
TERM:終端類型。
MAIL:系統信箱的路徑。

wc [選項] 文件…
說明:該命令統計給定文件中的字節數、字數、行數。若是沒有給出文件名,則從標準輸入讀取。wc同時也給出全部指定文件的總統計數。字是由空格字符區分開的最大字符串。
該命令各選項含義以下:
  - c 統計字節數。
  - l 統計行數。
  - w 統計字數。

vi
進入文本編輯的方式

  • i I
  • a A
  • o O

光標移動
右移 方向鍵、l
左移 h、方向鍵
上移:
-:上移到行開頭
k
Ctrl+P
方向鍵


移動到當前行的第一個字符:

  • 0:不管是否是空白字符
  • ^:費空白字符

移動到行尾:$

光標移動到第幾行 :
Ctrl + G:顯示行數
行號 G

移動那到下一個詞的開頭:w W

移動到前一個詞的開頭:b B

若是光標在一個詞上,就移動到詞尾:e E

文本修改

  • 刪除光標所在的字符:
  • x:刪除光標所在的字符
  • X:刪除光標前面的字符
  • nx,從光標前面的字符開始,向左刪除n個字符
  • 刪除光標所在的整行 dd
  • 從光標開始刪除到行尾 D
  • 刪除從光標位置+光標移動命令到大的位置

d0:刪到行首
d3l:又刪三個字符
d$:刪到行尾
d5G:刪到第5行
dw:刪到詞末尾
dL
dH

復員命令
回到插入或刪除得上一個狀態:u
恢復到剛開始編輯狀態:U

修改命令:

取代命令:
r:用隨後輸入的字符取代光標所在的位置
R:至關於r的重複使用

替換命令:
s:用隨後輸入的字符取代光標所在的位置
S:用隨後輸入的字符替代整行

文本行合成 :J:把當前行與下一行和成一行

文本移動命令:
>:
>>
<
<<

!+光標移動命令+linux命令

編輯文件

字符串搜索:

  • f 字符
  • F 字符
  • /字符串/位移
  • ?字符串?位移

字符串替換:
通常格式:g/模式/命令
g/s1/p:打印包含全部s1的行
g/s1/s//s2

shell使用

成組命令:

  • {空格 命令1;命令2;}
  • (命令1;命令2)

字符串匹配
grep:標準的正則表達式匹配
egrep:擴展的正則表達式匹配 至關與 -F
fgrep:快速對字符串進行匹配 至關與 -E

  • -f file :從文件中讀取匹配模式進行匹配
  • -i:忽略大小寫
  • -l :列出匹配模式的文件名,而非打印
  • -q:若是匹配了,grep會靜默的離開,將其不匹配的行寫入標準輸出,不然不成功
  • -v:顯示不匹配的行


shell語言能夠說是文本處理語言,可是它應該具有必定的運算能力

變量

環境變量:全局變量,會繼承
普通變量:局部變量,不會繼承

常量
對變量的管理有 readonly 和 export
shell變量的建立沒有啥要求,是一種邊定義邊賦值的變量,須要的時候直接變量等於什麼就行了,例如a=sdad
由於咱們說sheel變量就是給一個信息片建立的名字,它沒有說什麼浮點數之類的,因此說算術運算咱們須要在(())中實現,
他對變量的類型只有環境變量等,並且建立環境變量還須要export 普通變量

數組的建立

對於數組的建立一種辦法直接就是
a[0]=1
a[1]=2
引用的時候是${a[0]},${a[1]}

或者你能夠實現用declare
root@kali:/mnt/bdshare# declare -a c
root@kali:/mnt/bdshare# echo $c

root@kali:/mnt/bdshare# echo ${c[0]}

root@kali:/mnt/bdshare# c[0]=1
root@kali:/mnt/bdshare# echo ${c[0]}
1
root@kali:/mnt/bdshare# echo ${c[1]}

其實不必declare,想讓他是數組就直接寫成數組的形式就能夠了

或者用圓括號 c=(e1 e2 e3),引用時c[0]

set命令

不加參數:顯示已經定義的所有變量
設置指定位置參數
  set 1 2 3:表示$1=1,$2=2,$3=3

env能夠顯示環境變量:後面還有

unset 用於刪除變量和函數

  • -v 刪除變量
  • -f 解除指定的函數

替換運算符

echo ${d:-word}:若是變量存在且非空,返回值,不然返回word,use to test the varible exists or null
echo ${d:+word}:若是存在and非空,返回word,to test the exist of varible
echo ${d:=word}:若是存在且非空,返回值,不然,賦值爲word,return word
echo ${d:?word}:if exist or is null,print word,and exit the script or command
above all,":" could is choosed or is not choosed,if not is choosed,cancel the option of null or not null

若是一個變量賦值是一個文件夾或者是一個目錄,你去cat 或者cd的話是能夠實現的,由於他會解析字符串,其實就和咱們輸入的字符串是一個道理,你把它看成你的文件或目錄就好了。

環境變量和普通變量的區別我來好好說一下
1,變量就是給一個信息片建立的名字,那就像是一片空間的數據,引用他就能夠了
2,咱們說操做系統中的用戶環境是怎麼構成的?在用戶註冊過程當中,系統首先作的是建立用戶環境,全部的進程都有獨立且不一樣與程序自己的環境,linux環境是由許多變量以及這些變量的值構成的,
在操做系統中進程是怎麼構成的呢?程序+進程控制塊+數據,一個用戶環境其實就是一個進程,當你建立多個用戶的時候,在不一樣用戶之間切換,其實就是進程之間的切換了。這些變量和變量的值決定了用戶環境的外觀,shell環境包括shell類型,主目錄。

輸入輸出命令
read:從標準鍵盤上輸入數據
read -p 提示變量名
root@kali:~# read -p "hahaha" x
hahahadsd
echo:直接顯示後面的變量名和字符串

條件測試:$1是指輸入的第一個參數
三種形式:

  • test -f "$1"
  • [ -f "$1" ]
  • [[ -f "$1"]]

文件方面的測試

  • -f: 普通文件
  • -d:目錄文件
  • -b:塊設備文件
  • -s:文件長度>0true
  • -r:可讀
  • -w:可寫
  • -x:可執行
  • -p:pipe文件
  • -c:字符文件
  • -e: 文件存在

字符串方面的測試:注意:符號先後有空格
-z s1:空爲真
-n s1:>0 true
s1 = s2 :true
s1 != s2
s1 < s2
s1 > s2

數值方面的測試
n1 -eq n2:==
n1 -ne n2: !=
n1 -le n2: <=
n1 -lt n2: <
n1 -ge n2: >=
n1 -gt n2: >

邏輯運算符
!,-a,  -o

\(表達式\):總體判斷

算術運算
(( 算術表達式)):對於這個,只有加入$((算術表達式))才能輸出值
let "算術表達式"
例子:
root@kali:~# read x y
1 2
root@kali:~# echo $((x+y))
3
root@kali:~# echo $((z=x+y))
3
root@kali:~# echo z
z
root@kali:~# echo $z
3
root@kali:~# let "z=x*y+y"
root@kali:~# echo $z
4
雙引號:除$,"",\,以外均做爲普通字符對待

單引號:將全部獲得字符都看作普通字符對待

到引號:將其中的內容解析爲shell命令,有兩種形式
x=`pwd`;將pwd解析的值做爲變量x的值
x=$(pwd);和上面是一個道理

順序執行:;

邏輯與:&&:這個邏輯與是命令之間的與,上一個與是條件測試的與

邏輯或:||

if控制結構

style1:
if 測試條件
then
command1
else
command2
fi
style2:
if 測試條件
then
command1
elif 測試條件
then
command2
else
command3
fi

while語句
while 測試條件
do
command
done

shift命令:將位置參數右移一位

until語句(測試條件爲假時,才循環,爲真是才終止循環)
until 測試條件
do
command
done

for語句

for 變量 in 值表
do
command
done

for((i=1;i<$1;i++))
do
command
done


$#——除腳本名外,命令行上參數的個數。
$? ——上一條前臺命令執行後的返回值(也稱「退出碼」等)。
$$——當前進程的進程號。
$! ——上一個後臺命令對應的進程號。
$*——表示在命令行上實際給出的全部實參。

gcc編譯系統

三個過程:
preprocessing
  gcc -E :分析僞指令,頭文件 條件編譯:生成.i
compiling :進行語法分析
  gcc -S:生成.s的彙編文件
Assembler:將彙編代碼翻譯爲機器代碼
  gcc -c :生成.o文件
linking
  gcc -o :生成.out3文件

rpm

  • -i:install
  • -u:update
  • -v:顯示執行過程
  • -l:顯示文件列表
  • -q:詢問:通常和a,l連用
  • -e:卸載
  • -a:顯示全部的包

Linux控制檯的使用
六個字符控制檯
ctrl+alt+f1-f6,是六個字符控制檯
Ctrl+alt+f7是圖形界面即x+windows
在字符控制檯下,Linux使用startx命令進行進入圖形界面

linux外在設備的使用

首先咱們先來介紹一下分區和掛載的概念
分區是對硬盤進行格式化分區,只有按相應的格式進行分區才能將數據寫入磁盤
而掛載呢,就是將邏輯位置的物理位置映射到該分區上,咱們說的文件系統類型是什麼呢?就是分區的格式,只有肯定知道硬盤分區的格式才能寫入數據呀。
接下來是設備文件和硬件
Linux中,設備do都是以設備文件的形式存在,那固然,不一樣的設備類型就有不一樣獲得文件類型了
設備文件的命名方式是主設備號+次設備號,
好比說:
sd:scsi硬盤,sda:scsi硬盤的第一塊硬盤,sda1:scsi硬盤的第一塊硬盤的第一個分區(u盤被認爲是sd類型)
fd是軟盤。

經常使用的文件系統格式

  • msdos:dos文件系統
  • vfat:當成是windows文件系統
  • iso9660:光盤格式的文件系統
  • ext2/ext3/ext4:Linux的主流文件系統
  • xfs:一種高性能獲得日誌文件系統

瞭解這些以後,咱們就能夠掛載使用了,當掛載好後,咱們訪問這個掛在目錄,就能夠訪問這個設備文件了

掛載方式
mount -t 文件系統類型 設備名就是設備文件 掛載點
例如 mount -t vfat /dev/sda1 /mnt/usb

設備的下載
unmount 掛載目錄

Linux操做系統的內核獲得功能有
內存管理
進程管理
進程間通訊
虛擬文件系統
Linux支持許多種文件系統,它用通用的文件系統模型表示各類不一樣的文件系統,屏蔽了具體的文件系統之間的差別
能夠分爲邏輯文件系統和設備驅動程序
邏輯文件系統就是各類文件系統的格式
設備驅動程序就是每一種設備控制器所編寫的設備驅動程序模塊

網絡接口:提供了對各類網絡1標準的實現和各類網絡硬件的支持

再講一下linux初始化init系統

從BIOS開始,加載系統鏡像到內存,進行內核初始化,內和初始化結束後建立PID=1的進程,而後須要一個系統去初始化init進程的行爲,這個系統就是init系統。
這裏要介紹一個系統服務管理工具

systemd,它是一個用戶級別的管理工具

# 重啓系統
$ sudo systemctl reboot

# 關閉系統,切斷電源
$ sudo systemctl poweroff

# CPU中止工做
$ sudo systemctl halt

# 暫停系統
$ sudo systemctl suspend

# 讓系統進入冬眠狀態
$ sudo systemctl hibernate

# 讓系統進入交互式休眠狀態
$ sudo systemctl hybrid-sleep

# 啓動進入救援狀態(單用戶狀態)
$ sudo systemctl rescue

# 當即啓動一個服務
$ sudo systemctl start apache.service

# 當即中止一個服務
$ sudo systemctl stop apache.service

# 重啓一個服務
$ sudo systemctl restart apache.service

# 殺死一個服務的全部子進程
$ sudo systemctl kill apache.service

# 從新加載一個服務的配置文件
$ sudo systemctl reload apache.service

# 重載全部修改過的配置文件
$ sudo systemctl daemon-reload

# 顯示某個 Unit 的全部底層參數
$ systemctl show httpd.service

# 顯示某個 Unit 的指定屬性的值
$ systemctl show -p CPUShares httpd.service

# 設置某個 Unit 的指定屬性
$ sudo systemctl set-property httpd.service CPUShares=500

顯示操做系統相關參數
root@kali:~# uname
Linux
root@kali:~# uname -a
Linux kali 4.9.0-kali3-amd64 #1 SMP Debian 4.9.16-1kali1 (2017-03-24) x86_64 GNU/Linux
root@kali:~# uname -m
x86_64
root@kali:~# uname -n
kali
root@kali:~# uname -r
4.9.0-kali3-amd64
root@kali:~#

last:顯示過去登錄過系統的用戶相關信息
讀的是/var/log文件
top:至關於windows的任務管理器

split命令:切割文件
telnet 遠程鏈接 Telnet 主機名+端口號
wget:下載軟件

stty 用來控制終端的各類設置
好比
root@kali:~# stty -echo
用來關閉自動打印輸入字符的功能,一旦關閉,輸入的字符就看不到了
這時候就能夠在人工輸入密碼的時候用到了
read pass < /dev/tty
經過這種方式錄入密碼從終端,當打開tty這個文件時,linux會自動將他定向到終端。

固然最後要將自動打印輸入字符的功能打開
stty echo

MAKEFILE

下載源代碼包後解壓發現一個configur文件,運行它,它是用來檢查當前機器的環境的,而後收集環境信息,若是環境檢查經過,會生成一個Makefile文件,這個文件是用來編譯的,和configur是同一個文件夾下這個Makefile文件由make開發工具所能識別的,因此,經過make 編譯Makefile文件。插入一個點:Makefile文件是一個文本形式的數據庫文件,記錄了一系列文件之間的依賴關係上所應執行的命令序列,即那但願文件須要先編譯,那些文件從新編譯,一旦調用這個make命令,他就會自動查找Makefile文件而且去調用它。當肯定好依賴關係後,你就能夠經過make install 安裝這個源文件了。

相關文章
相關標籤/搜索