本節主要講 gdb、shutdown 、rpm/yum/apt-get 和 mount
目錄
gdb 用法
shutdown 和 reboot
rpmmount
umount
usb前一節講了 gcc 是編譯用的,gdb 則是除錯用的,類似於 vs 中的 debug,可以斷點、單步除錯
$ gcc -g -o test test.c
$ gdb test
選項
list
l顯示多行源**
break
b設定斷點,程式執行到斷點的位置會停下來
info
i描述程式的狀態
runr
開始執行程式
display
disp
跟蹤檢視某個變數,每次停下來都顯示它的值
step
s執行下一條語句,如果該語句為函式呼叫,則進入函式執行其中的第一條語句
next
n執行下一條語句,如果該語句為函式呼叫,不會進入函式內部執行(即不會一步步地除錯函式內部語句)
p列印內部變數值
continue
c繼續程式的執行,直到遇到下乙個斷點
set var name=v
設定變數的值
start
st開始執行程式,在main函式的第一條語句前面停下來
file
裝入需要除錯的程式
kill
k終止正在除錯的程式
watch
監視變數值的變化
backtrace
bt產看函式呼叫資訊(堆疊)
frame
f檢視棧幀
quit
q退出gdb環境
只有 root 許可權才能關機和重啟
init0 是關機,init6 是重啟
一般來說著名的 linux 系統基本上分兩大類:
1、redhat 系列:redhat、centos、fedora 等
2、debian 系列:debian、ubuntu 等
在這兩大類系統上想安裝東西時要使用的命令如下
redhat 系列
1、rpm
$ rpm -i *.rpm # 安裝
$ rpm -ivh *.rpm # 安裝並且有安裝進度等提示資訊
$ rpm -uvh *.rpm # 公升級並且有安裝進度等提示資訊
$ rpm -ivh –force -nodeps mypck-1.1-2rj.i386.rpm
# 安裝mypck包且顯示安裝資訊等,軟體版本號1.1,發行號為2
# rh表作業系統,i386表示這個軟體包適用於intel 80386以上的x86架構的計算機(ai32)
$ --force表示強制安裝,-nodeps忽略缺失的依賴檔案
$ rpm -u *.rpm # *為包名,公升級乙個已存在的軟體包
$ rpm -e * # *為包名,解除安裝乙個包,注意不要有字尾.rpm
$ rpm -qa|grep -i 'name' # 檢視是否安裝有名為name的rpm包
$ rpm -qif `which rpm_pkg_name` # 返回軟體包的有關資訊(看檔案在哪個包裡)
rpm 的包名比較長,因為不同的機器、不同的 linux 版本要使用 rpm 包也不一樣,所以要自己找對應的包
2、yum 黃狗
最簡單,yum 幫你去找對應的包,你只要說你要什麼包就行了
# yum會自己去幫你找你需要的包是哪個版本,可以不用指定
# yum install httpd # 安裝httpd包
# yum remove httpd # 解除安裝httpd和相關的包
# yum list # 檢視所有可安裝的包
# yum list installed # 檢視所有已安裝的包
# yum update # 公升級所有包同時公升級系統和軟體核心
3、tar
有 gcc 的機器才用
debian 系列
apt和apt-get
ubuntu上常用的包安裝命令為apt和apt-get
區別:兩個命令差的不多;
apt是apt-get、apt-cache 和 apt-config 中最常用命令選項的集合;
linux發行商鼓勵使用apt,apt提供了 linux 包管理的必要選項
$ apt install pkg # 安裝包,或者apt-get install
$ apt remove pkg # remove解除安裝包但保留配置檔案,purge刪除包同時刪除檔案,或者apt-get remove,purge對應為apt-get purge
$ apt list zlib* # 找出本地倉庫中所有已zlib開頭的包,只寫apt list就會列出所有包,apt-get沒這個功能
$ apt search keyword # 搜尋給定關鍵字,並列出所有的包和描述,在找指定功能的包的時候會用到,對應為apt-cache search
$ apt autoremove pkg # 自動刪除不需要的包, 對應為apt-get autoremove
apt-get
linux 是用於伺服器的作業系統,伺服器最重要意識 cpu,二是硬碟
早起 linux 還有什麼顯示卡音效卡,現在說到裝置基本就是硬碟,所以 mount 的操作物件是硬碟
硬碟滿了,買個硬碟然後開啟機箱插機器上 mount 就行了
插上硬碟後:
$ fdisk -l # 檢視分割槽狀態,看有沒有沒分割槽的空盤,插了一塊就有 /dev/sda 兩塊就有 /dev/sdb
sdb 是乙個物理硬碟,現在要把這個硬碟放到軟體可以訪問的地方上
$ fdisk
一般來說用 n(加乙個新分割槽),這就獲得乙個新的邏輯分割槽
接下來用 mkfs 格式化
一般用 mkfs.xfs
$ mkfs.ext4 /dev/sdb1 or # 或 mkfs.xfs /sdb1
# 除了 xfs 還有 nfs,nfs就是把 a 機器上的硬碟 mnt 到 b 機器上,b的也可以 mnt 到 a 的上,這樣共享資料而且安全,但要搭建網路
# nis 還可以做到多台機器/使用者共享乙個內容,登入一台機器就是登入十臺機器,公司小區域網裡可能用到
$ mkdir -p /mnt/backup2
$ mount /dev/sdb1 /mnt/backup2
這就把硬碟掛載上了,之後對於 /mnt/backup2 的訪問就是對硬碟 /dev/sdb1 的訪問
一般也不加 -type 說明是那種型別
因為 mount 之後會在 /proc/filesystems 裡挨個試,哪個試成功了就是那個型別所以無需指定
要注意的就是硬碟要 mnt 到並列的目錄下,不要乙個在 mnt 乙個在 mnt/hd1 下
使用 $ mount 檢視當前的 mnt 的狀態,但是看不到哪個硬碟掛在**,也看不到空間
實際上用的是 $ df -h
umount 就是 unmount ,取消掛載,當初寫的時候寫錯了少寫了個 n
umount 顯示 device is busy 說明硬碟的內容還有在讀寫,這時候不能硬把硬碟拔下來不然東西就沒了,可能會把機器搞壞
解決方法
1、關機
可能造成工作丟失
2、umount -l
lazy umount 會斷開裝置並關閉開啟該裝置的全部控制代碼
插入 u 盤
這裡是 root 的許可權所以不是 $ 是 #
# mkdir /mnt/usb1
# ls /dev/sd* # u 盤的裝置檔案也是 sd*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sdb /dev/sdb1 # 出現的檔案為掛載的 sata 硬碟
現在,插上 u 盤,再觀察/dev/ 目錄
# ls /dev/sd*
/dev/sda /dev/sda2 /dev/sdb/dev/sdc
/dev/sda1 /dev/sda3 /dev/sdb1 /dev/sdc1
# 多出來的 sdc 為 u 盤的裝置檔案,現在把新增的裝置 mount 上
[root@forward /]# mount /dev/sdc1 /mnt/usb1
$ cp /home/yd211/1.txt /mnt/usb1
$ sync # 把 linux cash 中還沒做的命令強行做,也就是同步
$ umount /mnt/usb1 # umount /dev/sdc1 也行
如果 umount 不了顯示 busy,就用 umount -l 強行解除安裝
可以拔出 u 盤了
學習筆記 07 python入門 模組
立即學習 1 安裝模組 1,cmd下 2,pip install 2 解除安裝模組 1,cmd下 2,pip uninstall 3 模組 函式 程式的集合體 類似api概念 有系統已存在的,也可以自定義自己的模組 4 匯出模組 download as 模組名.py 5 匯入模組 1.import ...
學習筆記07
2017年9月26日 學習筆記與總結 1.盒子模型簡介 margin 當前元素和相鄰元素之間的距離 分四個方向,按順時針方向 top right bottom left 特點 1.垂直方向的相鄰元素,上下外邊距只會取最大值 2.在子元素裡新增垂直方向的外邊距,需要給父元素新增 overflow hi...
學習筆記07
概述 在程式設計中,為了方便處理資料具有相同型別的若干變數按有序形式組織起來 稱為陣列。include 變數定義 資料型別 變數 值 陣列定義 資料型別 陣列名 元素個數 int array 10 陣列 陣列下標 陣列名 下標 printf d n arr 0 printf d n arr 1 pr...