前言
成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供宜章網(wǎng)站建設(shè)、宜章做網(wǎng)站、宜章網(wǎng)站設(shè)計(jì)、宜章網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、宜章企業(yè)網(wǎng)站模板建站服務(wù),10年宜章做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
第1章 Linux命令行簡(jiǎn)介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令幫助 / 4
1.3Linux shutdown reboot halt / 9
關(guān)機(jī):
shutdown -h now
halt
init 0
第2章 文件和目錄操作命令 / 13
2.1pwd:顯示當(dāng)前所在的位置 / 13
2.2cd:切換目錄 / 16
2.3tree:以樹(shù)形結(jié)構(gòu)顯示目錄下的內(nèi)容 / 18
2.4mkdir:創(chuàng)建目錄 / 22
2.5touch:創(chuàng)建空文件或改變文件的時(shí)間戳屬性 / 27
2.6ls:顯示目錄下的內(nèi)容及相關(guān)屬性信息 / 30
2.7cp:復(fù)制文件或目錄 / 39
2.8mv:移動(dòng)或重命名文件 / 42
2.9rm:刪除文件或目錄 / 45
2.10rmdir:刪除空目錄 / 48
2.11ln:硬鏈接與軟鏈接 / 49
2.12readlink:查看符號(hào)鏈接文件的內(nèi)容 / 54
2.13find:查找目錄下的文件 / 55
2.14xargs:將標(biāo)準(zhǔn)輸入轉(zhuǎn)換成命令行參數(shù) / 68
2.15rename:重命名文件 / 71
2.16basename:顯示文件名或目錄名 / 72
2.17dirname:顯示文件或目錄路徑 / 72
2.18chattr:改變文件的擴(kuò)展屬性 / 73
2.19lsattr:查看文件擴(kuò)展屬性 / 75
2.20file:顯示文件的類(lèi)型 / 76
2.21md5sum:計(jì)算和校驗(yàn)文件的MD5值 / 77
2.22chown:改變文件或目錄的用戶(hù)和用戶(hù)組 / 80
2.23chmod:改變文件或目錄權(quán)限 / 81
2.24chgrp:更改文件用戶(hù)組 / 85
2.25umask:顯示或設(shè)置權(quán)限掩碼 / 86
2.26老男孩從新手成為技術(shù)大牛的心法 / 90
第3章 文件過(guò)濾及內(nèi)容編輯處理命令 / 91
3.1cat:合并文件或查看文件內(nèi)容 / 91
3.2tac:反向顯示文件內(nèi)容 / 103
3.3more:分頁(yè)顯示文件內(nèi)容 / 104
3.4less:分頁(yè)顯示文件內(nèi)容 / 107
3.5head:顯示文件內(nèi)容頭部 / 109
3.6tail:顯示文件內(nèi)容尾部 / 111
3.7tailf:跟蹤日志文件 / 114
3.8cut:從文本中提取一段文字并輸出 / 115
3.9split:分割文件 / 117
3.10paste:合并文件 / 118
3.11sort:文本排序 / 123
3.12join:按兩個(gè)文件的相同字段合并 / 127
3.13uniq:去除重復(fù)行 / 129
3.14wc:統(tǒng)計(jì)文件的行數(shù)、單詞數(shù)或字節(jié)數(shù) / 131
3.15iconv:轉(zhuǎn)換文件的編碼格式 / 133
3.16dos2unix:將DOS格式文件轉(zhuǎn)換成UNIX格式 / 134
3.17diff:比較兩個(gè)文件的不同 / 135
3.18vimdiff:可視化比較工具 / 138
3.19rev:反向輸出文件內(nèi)容 / 139
3.20tr:替換或刪除字符 / 140
3.21od:按不同進(jìn)制顯示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:純文本編輯器 / 147
3.24老男孩逆襲思想:做Linux運(yùn)維的多個(gè)好處 / 152
第4章 文本處理三劍客 / 153
4.1grep:文本過(guò)濾工具 / 153
4.2sed:字符流編輯器 / 159
4.3awk基礎(chǔ)入門(mén) / 165
第5章 Linux信息顯示與搜索文件命令 / 176
5.1uname:顯示系統(tǒng)信息 / 176
5.2hostname:顯示或設(shè)置系統(tǒng)的主機(jī)名 / 178
5.3dmesg:系統(tǒng)啟動(dòng)異常診斷 / 179
5.4stat:顯示文件或文件系統(tǒng)狀態(tài) / 181
5.5du:統(tǒng)計(jì)磁盤(pán)空間使用情況 / 183
5.6date:顯示與設(shè)置系統(tǒng)時(shí)間 / 186
5.7echo:顯示一行文本 / 190
5.8watch:監(jiān)視命令執(zhí)行情況 / 193
5.9which:顯示命令的全路徑 / 195
5.10whereis:顯示命令及其相關(guān)文件全路徑 / 196
5.11locate:快速定位文件路徑 / 197
5.12updatedb:更新mlocate數(shù)據(jù)庫(kù) / 199
5.13老男孩逆襲思想:新手在工作中如何問(wèn)問(wèn)題不會(huì)被鄙視 / 200
第6章 文件備份與壓縮命令 / 201
6.1tar:打包備份 / 201
6.2gzip:壓縮或解壓文件 / 208
6.3zip:打包和壓縮文件 / 211
6.4unzip:解壓zip文件 / 212
6.5scp:遠(yuǎn)程文件復(fù)制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆襲思想:新手如何高效地提問(wèn) / 220
第7章 Linux用戶(hù)管理及用戶(hù)信息查詢(xún)命令 / 222
7.1 useradd:創(chuàng)建用戶(hù) / 222
7.2usermod:修改用戶(hù)信息 / 227
7.3userdel:刪除用戶(hù) / 229
7.4groupadd:創(chuàng)建新的用戶(hù)組 / 230
7.5groupdel:刪除用戶(hù)組 / 231
7.6passwd:修改用戶(hù)密碼 / 232
7.7chage:修改用戶(hù)密碼有效期 / 237
7.8chpasswd:批量更新用戶(hù)密碼 / 238
7.9su:切換用戶(hù) / 240
7.10visudo:編輯sudoers文件 / 242
7.11sudo:以另一個(gè)用戶(hù)身份執(zhí)行命令 / 244
7.12id:顯示用戶(hù)與用戶(hù)組的信息 / 248
7.13w:顯示已登錄用戶(hù)信息 / 249
7.14who:顯示已登錄用戶(hù)信息 / 250
7.15users:顯示已登錄用戶(hù) / 252
7.16whoami:顯示當(dāng)前登錄的用戶(hù)名 / 253
7.17last:顯示用戶(hù)登錄列表 / 253
7.18lastb:顯示用戶(hù)登錄失敗的記錄 / 254
7.19lastlog:顯示所有用戶(hù)的最近登錄記錄 / 255
第8章 Linux磁盤(pán)與文件系統(tǒng)管理命令 / 257
8.1fdisk:磁盤(pán)分區(qū)工具 / 257
8.2partprobe:更新內(nèi)核的硬盤(pán)分區(qū)表信息 / 265
8.3tune2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)參數(shù) / 266
8.4parted:磁盤(pán)分區(qū)工具 / 268
8.5mkfs:創(chuàng)建Linux文件系統(tǒng) / 272
8.6dumpe2fs:導(dǎo)出ext2/ext3/ext4文件系統(tǒng)信息 / 274
8.7resize2fs:調(diào)整ext2/ext3/ext4文件系統(tǒng)大小 / 275
8.8fsck:檢查并修復(fù)Linux文件系統(tǒng) / 278
8.9dd:轉(zhuǎn)換或復(fù)制文件 / 281
8.10mount:掛載文件系統(tǒng) / 284
8.11umount:卸載文件系統(tǒng) / 288
8.12df:報(bào)告文件系統(tǒng)磁盤(pán)空間的使用情況 / 289
8.13mkswap:創(chuàng)建交換分區(qū) / 293
8.14swapon:激活交換分區(qū) / 294
8.15swapoff:關(guān)閉交換分區(qū) / 295
8.16sync:刷新文件系統(tǒng)緩沖區(qū) / 296
第9章 Linux進(jìn)程管理命令 / 298
9.1ps:查看進(jìn)程 / 298
9.2pstree:顯示進(jìn)程狀態(tài)樹(shù) / 305
9.3pgrep:查找匹配條件的進(jìn)程 / 306
9.4kill:終止進(jìn)程 / 307
9.5killall:通過(guò)進(jìn)程名終止進(jìn)程 / 310
9.6pkill:通過(guò)進(jìn)程名終止進(jìn)程 / 311
9.7top:實(shí)時(shí)顯示系統(tǒng)中各個(gè)進(jìn)程的資源占用狀況 / 313
9.8nice:調(diào)整程序運(yùn)行時(shí)的優(yōu)先級(jí) / 320
9.9renice:調(diào)整運(yùn)行中的進(jìn)程的優(yōu)先級(jí) / 323
9.10nohup:用戶(hù)退出系統(tǒng)進(jìn)程繼續(xù)工作 / 324
9.11strace:跟蹤進(jìn)程的系統(tǒng)調(diào)用 / 325
9.12ltrace:跟蹤進(jìn)程調(diào)用庫(kù)函數(shù) / 332
9.13runlevel:輸出當(dāng)前運(yùn)行級(jí)別 / 334
9.14init:初始化Linux進(jìn)程 / 335
9.15service:管理系統(tǒng)服務(wù) / 335
第10章 Linux網(wǎng)絡(luò)管理命令 / 338
10.1ifconfig:配置或顯示網(wǎng)絡(luò)接口信息 / 338
10.2ifup:激活網(wǎng)絡(luò)接口 / 343
ifup eth0
10.3ifdown:禁用網(wǎng)絡(luò)接口 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整個(gè)網(wǎng)絡(luò),所有網(wǎng)卡。
10.4route:顯示或管理路由表 / 344
10.5arp:管理系統(tǒng)的arp緩存 / 350
10.6ip:網(wǎng)絡(luò)配置工具 / 351
10.7netstat:查看網(wǎng)絡(luò)狀態(tài) / 358
10.8ss:查看網(wǎng)絡(luò)狀態(tài) / 362
10.9ping:測(cè)試主機(jī)之間網(wǎng)絡(luò)的連通性 / 363
10.10traceroute:追蹤數(shù)據(jù)傳輸路由狀況 / 366
10.11arping:發(fā)送arp請(qǐng)求 / 367
10.12telnet:遠(yuǎn)程登錄主機(jī) / 369
10.13nc:多功能網(wǎng)絡(luò)工具 / 370
10.14ssh:安全地遠(yuǎn)程登錄主機(jī) / 373
10.15wget:命令行下載工具 / 376
10.16mailq:顯示郵件傳輸隊(duì)列 / 379
10.17mail:發(fā)送和接收郵件 / 381
10.18nslookup:域名查詢(xún)工具 / 386
10.19dig:域名查詢(xún)工具 / 389
10.20host:域名查詢(xún)工具 / 393
10.21nmap:網(wǎng)絡(luò)探測(cè)工具和安全/端口掃描器 / 394
10.22tcpdump:監(jiān)聽(tīng)網(wǎng)絡(luò)流量 / 398
第11章 Linux系統(tǒng)管理命令 / 407
11.1lsof:查看進(jìn)程打開(kāi)的文件 / 407
11.2uptime:顯示系統(tǒng)的運(yùn)行時(shí)間及負(fù)載 / 411
11.3free:查看系統(tǒng)內(nèi)存信息 / 411
11.4iftop:動(dòng)態(tài)顯示網(wǎng)絡(luò)接口流量信息 / 413
11.5vmstat:虛擬內(nèi)存統(tǒng)計(jì) / 415
11.6mpstat:CPU信息統(tǒng)計(jì) / 419
11.7iostat:I/O信息統(tǒng)計(jì) / 420
11.8iotop:動(dòng)態(tài)顯示磁盤(pán)I/O統(tǒng)計(jì)信息 / 423
11.9sar:收集系統(tǒng)信息 / 425
11.10chkconfig:管理開(kāi)機(jī)服務(wù) / 430
11.11ntsysv:管理開(kāi)機(jī)服務(wù) / 433
11.12? setup:系統(tǒng)管理工具 / 434
11.13ethtool:查詢(xún)網(wǎng)卡參數(shù) / 436
11.14mii-tool:管理網(wǎng)絡(luò)接口的狀態(tài) / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自動(dòng)化RPM包管理工具 / 446
top命令
第12章 Linux系統(tǒng)常用內(nèi)置命令 / 450
12.1Linux內(nèi)置命令概述 / 450
12.2Linux內(nèi)置命令簡(jiǎn)介 / 450
12.3Linux常用內(nèi)置命令實(shí)例 / 452
在c語(yǔ)言中調(diào)用shell命令的方法實(shí)現(xiàn)。
c程序調(diào)用shell腳本共有兩種方法
:system()、popen(),分別如下:
system()
不用自己去創(chuàng)建進(jìn)程,系統(tǒng)已經(jīng)封裝了這一步,直接加入自己的命令即可
popen()
也可以實(shí)現(xiàn)執(zhí)行的命令,比system
開(kāi)銷(xiāo)小
以下分別說(shuō)明:
1)system(shell命令或shell腳本路徑);
system()
會(huì)調(diào)用fork()產(chǎn)生
子歷程,由子歷程來(lái)調(diào)用/bin/sh-c
string來(lái)履行
參數(shù)string字符串所代表的命令,此命令履行
完后隨即返回原調(diào)用的歷程。在調(diào)用system()期間sigchld
信號(hào)會(huì)被暫時(shí)擱置,sigint和sigquit
信號(hào)則會(huì)被漠視
。
返
回值:如果system()在調(diào)用/bin/sh時(shí)失敗則返回127,其他失敗原因返回-1。若參數(shù)string為空指針(null),則返回非零值。
如果
system()調(diào)用成功
則最后會(huì)返回履行
shell命令后的返回值,但是此返回值也有可能為system()調(diào)用/bin/sh失敗所返回的127,因
此最好能再反省
errno
來(lái)確認(rèn)履行
成功
。
system命令以其簡(jiǎn)略
高效的作用得到很很廣泛
的利用
,下面是一個(gè)例子
例:在/tmp/testdir/目錄下有shell腳本tsh.sh,內(nèi)容為
#!/bin/sh
wget
$1
echo
"done!"
2)popen(char
*command,char
*type)
popen()
會(huì)調(diào)用fork()產(chǎn)生
子歷程,然后從子歷程中調(diào)用/bin/sh
-c來(lái)履行
參數(shù)command的指令。參數(shù)type可應(yīng)用
“r”代表讀取,“w”代表寫(xiě)入。遵循此type值,popen()會(huì)建立
管道連到子歷程的標(biāo)準(zhǔn)
輸出設(shè)備
或標(biāo)準(zhǔn)
輸入設(shè)備
,然后返回一個(gè)文件指針。隨后歷程便可利用
此文件指針來(lái)讀取子歷程的輸出設(shè)備
或是寫(xiě)入到子歷程的標(biāo)準(zhǔn)
輸入設(shè)備
中。此外,所有應(yīng)用
文
件指針(file*)操作的函數(shù)也都可以應(yīng)用
,除了fclose()以外。
返回值:若成功
則返回文件指針,否則返回null,差錯(cuò)
原因存于errno中。注意:在編寫(xiě)具suid/sgid權(quán)限的程序時(shí)請(qǐng)盡量避免應(yīng)用
popen(),popen()會(huì)繼承環(huán)境變量,通過(guò)環(huán)境變量可能會(huì)造成系統(tǒng)安全的問(wèn)題。
例:c程序popentest.c內(nèi)容如下:
#include
main
{
file
*
fp;
charbuffer[80];
fp=popen(“~/myprogram/test.sh”,”r”);
fgets(buffer,sizeof(buffer),fp);
printf(“%s”,buffer);
pclose(fp);
}
Linux C編程啟動(dòng)另一個(gè)可執(zhí)行文件或調(diào)用命令用system函數(shù)最理想了,這個(gè)函數(shù)原理是在你編寫(xiě)的那個(gè)程序的內(nèi)部啟動(dòng)另一個(gè)程序或命令,從而創(chuàng)建一個(gè)新進(jìn)程,并等待這個(gè)進(jìn)程執(zhí)行完畢退出。如果正常執(zhí)行,system函數(shù)將返回被執(zhí)行程序或命令的退出碼;如果無(wú)法運(yùn)行這個(gè)程序或命令,將返回錯(cuò)誤代碼127;如果是其他錯(cuò)誤,返回-1。這個(gè)函數(shù)的原型是:
#include stdlib.h
int system(const char *string);
參數(shù)string是將要執(zhí)行的程序或命令的命令字符串。
還有一種執(zhí)行外部程序的方法是exec系列函數(shù),但這個(gè)系列的函數(shù)都是將當(dāng)前進(jìn)程的替換成新進(jìn)程,也就是說(shuō)新進(jìn)程啟動(dòng)后原來(lái)的進(jìn)程就不存在了,exec系列函數(shù)后面的那些代碼就不會(huì)再執(zhí)行了。所以我一般是用system函數(shù)調(diào)用Linux命令。