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


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

[mengqc@localhost ~]$ 是shell主提示符。其中

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

linux操作系統常用命令

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

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

data:顯示時間

cal:顯示日歷

passwd:更改密碼

cp -f file1 file2:復制文件

who:顯示誰在登錄以及時間

  • $:普通用戶。
  • #: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號 2、在passwd文件中添加一行 3、在/home/下創建用戶的家 4、在/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 安裝這個源文件了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM