因爲這是學習linux的第一週,整理的東西很雜很分散,其中包括了查看虛擬機的各類信息,命令相關的只整理了alias、date、history、cal、幫助會話screen等命令的使用,最後加上了兩個常見問題處理辦法;在之後的學習中會不斷完善文中整理的相關內容。
查看內核版本linux
[root@CentOS7 ~]#uname -r 3.10.0-957.el7.x86_64
查看系統版本shell
查看配置文件 [root@CentOS7 ~]#cat /etc/redhat-release //Centos CentOS Linux release 7.6.1810 (Core) gong@ubuntu1804:~$ cat /etc/os-release //Ubuntu系統 NAME="Ubuntu" VERSION="18.04.1 LTS (Bionic Beaver)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 18.04.1 LTS" VERSION_ID="18.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=bionic UBUNTU_CODENAME=bionic
使用lsb_release -a 命令 [root@CentOS7 ~]#lsb_release -a //Centos gong@ubuntu1804:~$ lsb_release -a //Ubuntu系統 No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 18.04.1 LTS Release: 18.04 Codename: bionic
查看內存大小ubuntu
[root@CentOS7 ~]#free total used free shared buff/cache available Mem: 1475156 706280 110076 22952 658800 515300 Swap: 3145724 264 3145460
[root@CentOS7 ~]#cat /proc/partitions major minor #blocks name 11 0 10491904 sr0 8 0 209715200 sda 8 1 1048576 sda1 8 2 104857600 sda2 8 3 3145728 sda3 8 4 1 sda4 8 5 52428800 sda5
查看cpu信息vim
[root@CentOS7 ~]# lscpu [root@CentOS7 ~]# cat /proc/cpuinfo
查看磁盤分區緩存
[root@CentOS7 ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 104806400 3713712 101092688 4% / devtmpfs 721736 0 721736 0% /dev tmpfs 737576 0 737576 0% /dev/shm tmpfs 737576 10780 726796 2% /run tmpfs 737576 0 737576 0% /sys/fs/cgroup /dev/sda5 52403200 33036 52370164 1% /data /dev/sda1 1038336 167008 871328 17% /boot tmpfs 147516 4 147512 1% /run/user/42 tmpfs 147516 32 147484 1% /run/user/0 /dev/sr0 10491772 10491772 0 100% /run/media/root/CentOS 7 x86_64 [root@CentOS7 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 3.7G 0 rom /media/CentOS_6.10_Final sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 97.7G 0 part / ├─sda3 8:3 0 48.8G 0 part /data ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 3G 0 part [SWAP]
的區別
功能:顯示字符bash
[root@CentOS7 ~]# echo 'hostname' //單引號爲強引用,不替換引號中的變量 hostname [root@CentOS7 ~]# echo `hostname` //反向單引號替換引號中的變量 CentOS7.localdomain [root@CentOS7 ~]# echo "hostname" //雙引號爲弱引用,替換引號中的變量 hostname [root@CentOS7 ~]# echo $(hostname) //$()替換變量的值 CentOS7.localdomain
echo $(shell)dom
[root@CentOS7 ~]#echo $SHELL /bin/bash [root@CentOS7 ~]#echo ${SHELL} /bin/bash
cat /etc/shell ionic
[root@CentOS7 ~]#cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash /bin/tcsh /bin/csh
[root@CentOS7 ~]#echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
臨時/永久 改變命令行提示符的格式、顏色
臨時改變:修改PS1變量ide
[root@CentOS7 ~]# PS1="\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]"
永久改變:修改配置文件
將命令追加至/etc/profile 文件中,而後從新登陸或重載文件source /etc/profile便可生效學習
[root@CentOS7 ~]# cat /etc/motd
區別內部命令和外部命令:type cmd
[root@CentOS7 ~]#type cd cd is a shell builtin //這是一個內部命令
[root@CentOS7 ~]#type rpm rpm is /usr/bin/rpm //顯示命令的路徑,爲外部命令
內部命令:由shell自帶的,並且經過某命令形式提供
help或enable顯示內部命令列表
enable cmd 啓用內部命令
enable -n cmd 禁用內部命令
enable -n 查看全部禁用的內部命令
外部命令:查看外部命令路徑:which -a|--skio-alias , whereis
[root@CentOS7 ~]#whereis cp cp: /usr/bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
做用:將執行的外部命令的路徑存儲在hash裏,再次執行外部命令是優先從hash裏尋找。
優勢:大大提升命令的調用速率
常見用法:
hash 顯示hash緩存
hash -l 顯示hash緩存,可做爲輸入使用
hash -p path name 給命令路徑path取別名name
hash -t name 打印緩存中的name路徑
hash -d name 清除name緩存
hash -r 清除緩存
[root@CentOS7 ~]#hash //顯示hash緩存 hits command 1 /usr/bin/timeout 1 /usr/bin/tty 2 /usr/bin/bash [root@CentOS7 ~]#hash -l //顯示hash緩存,可做爲輸入使用 builtin hash -p /usr/bin/timeout timeout builtin hash -p /usr/bin/tty tty builtin hash -p /usr/bin/bash bash [root@CentOS7 ~]#hash -p /usr/bin/timeout tout //給命令路徑path取別名name [root@CentOS7 ~]#hash -t tout //打印緩存中的name路徑 /usr/bin/timeout [root@CentOS7 ~]#hash -d tout //打印緩存中的name路徑 [root@CentOS7 ~]#hash -t tout //再次打印緩存中的name,發現已經找不到了 -bash: hash: tout: not found [root@CentOS7 ~]#hash -r //清除緩存 [root@CentOS7 ~]#hash hash: hash table empty
顯示當前shell進程的全部可用別名alias
[root@CentOS7 ~]#alias alias cp='cp -i' alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto'
定義別名:alias name=’cmd’
注意:僅對當前shell進程有效
[root@CentOS7 ~]#alias cdnet="cd /etc/sysconfig/network-scripts/" //命名別名` [root@CentOS7 ~]#cdnet //使用別名 [root@CentOS7 network-scripts]# //經過提示符已知進入到了network-scripts目錄
撤銷別名:unalias name
撤銷全部別名:unalias -a [root@CentOS7 ~]#unalias cdnet
注意:永久有效要定義在配置文件中:
對當前用戶有效:~/.bashrc
對全部用戶有效:/etc/bashrc
注意:別名能夠與原名相同,此時原名被隱藏;此時若是要運行原命令,則使用\cmd 「cmd」’cmd’
總結命令的優先級:
別名alias > 內部命令builtin > 外部命令/path/file>緩存hash
Source /path/to/config_file . /path/to/config_file
date 顯示和設置系統時間
date [option] [+format]
FORMAT:格式符
-d<字符串>:顯示字符串所指的日期與時間。字符串先後必須加上雙引號;
-s<字符串>:根據字符串來設置日期與時間。字符串先後必須加上雙引號;
date -s #設置當前時間,只有root權限才能設置,其餘只能查看 date -s 20120523 #設置成20120523,這樣會把具體時間設置成空00:00:00 date -s 01:01:01 #設置具體時間,不會對日期作更改 date -s "01:01:01 2012-05-23" #這樣能夠設置所有時間 date -s "01:01:01 20120523" #這樣能夠設置所有時間 date -s "2012-05-23 01:01:01" #這樣能夠設置所有時間 date -s "20120523 01:01:01" #這樣能夠設置所有時間
%F 顯示當前年月日
[root@CentOS7 ~]#date +%F 2019-03-16
%T 顯示當前時分秒
[root@CentOS7 ~]#date +%T 14:46:58
設定日期時間:date [MMDDhhmm[[CC]YY][.ss]]
[root@CentOS7 data]#date 031614302019.30 Sat Mar 16 14:30:30 CST 2019
若是須要以指定的格式顯示日期,可使用「+」開頭的字符串指定其格式,詳細格式以下:
%H : 小時(00-23)
%I : 小時(01-12)
%k : 小時(0-23)
%l : 小時(1-12)
%M : 分鐘(00-59)
%p : 顯示本地 AM 或 PM
%r : 直接顯示時間 (12 小時制,格式爲 hh:mm:ss [AP]M)
%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前爲止的秒數
%S : 秒(00-60)
%T : 直接顯示時間 (24 小時制)
%X : 至關於 %H:%M:%S
%Z : 顯示時區
%a : 星期幾 (Sun-Sat)
%A : 星期幾 (Sunday-Saturday)
%b : 月份 (Jan-Dec)
%B : 月份 (January-December)
%c : 直接顯示日期與時間
%d : 日 (01-31)
%D : 直接顯示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第幾天 (001-366)
%m : 月份 (01-12)
%U : 一年中的第幾周 (00-53) (以 Sunday 爲一週的第一天的情形)
%w : 一週中的第幾天 (0-6)
%W : 一年中的第幾周 (00-53) (以 Monday 爲一週的第一天的情形)
%x : 直接顯示日期 (mm/dd/yy)
%y : 年份的最後兩位數字 (00.99)
%Y : 完全年份 (0000-9999)
[root@CentOS7 ~]#timedatectl status Local time: Sat 2019-03-16 15:51:15 CST Universal time: Sat 2019-03-16 07:51:15 UTC RTC time: Sat 2019-03-16 08:13:56 Time zone: Asia/Shanghai (CST, +0800) NTP enabled: yes NTP synchronized: no RTC in local TZ: no DST active: n/a
[root@CentOS7 ~]#timedatectl set-timezone Asia/Shanghai
MMDDHHmmYYYY.ss
月 天 小時 分鐘 年.秒
[root@CentOS7 ~]#date 031615302019.30 //2019-03-16 15:30:30 Sat Mar 16 15:30:30 CST 2019
date +%Y%m%d #顯示前天年月日 date -d "+1 day" +%Y%m%d #顯示前一天的日期 date -d "-1 day" +%Y%m%d #顯示後一天的日期 date -d "-1 month" +%Y%m%d #顯示上一月的日期 date -d "+1 month" +%Y%m%d #顯示下一月的日期 date -d "-1 year" +%Y%m%d #顯示前一年的日期 date -d "+1 year" +%Y%m%d #顯示下一年的日期
[root@CentOS7 ~]#date Sat Mar 16 14:40:16 CST 2019 [root@CentOS7 ~]#date +%F -d "yesterday" //昨天 2019-03-15 [root@CentOS7 ~]#date +%F -d "3 day" //三天後 2019-03-19 [root@CentOS7 ~]#date +%F -d "-2 day" //兩天前 2019-03-14
-s 以硬件時鐘爲準
-w 以系統時間爲準
[root@CentOS7 ~]#cal 05 2019 [root@CentOS7 ~]#cal 2019 [root@CentOS7 ~]#cal -y //當前年日曆 [root@CentOS7 ~]#cal //顯示當前年當月日曆
使用此命令須要安裝screen包
screen -S [SESSION] //建立新會話
screen -x [SESSION] //加入會話
exit //退出並關閉會話
Ctrl+a,d //剝離當前會話
screen -ls //顯示已經打開的會話
screen -r [SESSION] //恢復某會話
在虛擬終端1上建立一個會話helpme [root@CentOS7 ~]#screen -S helpme 在虛擬終端2上查看並加入會話 [root@CentOS7 ~]#screen -ls There is a screen on: 60812.helpme (Attached) 1 Socket in /var/run/screen/S-root. [root@CentOS7 ~]#screen -x helpme
命令歷史history:shell進程會其會話中保存此前用戶提交執行過的命令;
定製history的功能,可經過環境變量實現:
HISTSIZE:shell進程可保留的命令歷史的條數; HISTFILE:持久保存命令歷史的文件** .bash_history** HISTFILESIZE:命令歷史文件的大小;
命令用法:
history [-c] [-d] [n]
-c: 清空命令歷史; -d offset:刪除指定命令歷史
history -anrw [文件名]
-a: 追加本次會話新執行的命令歷史列表至歷史文件 -r: 讀歷史文件附加到歷史列表 -w: 保存歷史列表到指定的歷史文件 -n: 讀歷史文件中未讀過的行到歷史列表
history -ps 參數 [參數...]
-p: 展開歷史參數成多行,但不存在歷史列表中 -s: 展開歷史參數成一行,附加在歷史列表後
history #:顯示最近的#條命令;
調用命令歷史列表中的命令:
!#:再一次執行歷史列表中的第#條命令; !!:再一次執行上一條命令; !STRING:再一次執行命令歷史列表中最近一個以STRING開頭的命令; 注意:命令的重複執行有時候須要依賴於冪等性;
調用上一條命令的最後一個參數:
快捷鍵:ESC, . 字符串:!$
控制命令歷史記錄的方式:
環境變量:HISTCONTROL ignoredups:忽略重複的命令; ignorespace:忽略以空白字符開頭的命令; ignoreboth:以上二者同時生效; 例:HISCONTROL=ignoredups
注:命令歷史文件存放:/etc/profile 或 ~/.bash_profile
步驟:
一、添加一塊虛擬硬盤
二、使用lsblk 命令查看磁盤是否顯示出來
三、使用 [root@CentOS7 ~]#echo '- - -' > /sys/class/scsi_host/host0/scan 命令重定向,強制刷新硬盤
(注:/sys/class/scsi_host/ 路徑下有多個host[0,1,2..]文件,每次刷新一個,直至新硬盤出現)
[root@CentOS7 ~]#lsblk //使用lsblk發現新加的硬盤沒有顯示出來 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 100G 0 part / ├─sda3 8:3 0 3G 0 part [SWAP] ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 50G 0 part /data sr0 11:0 1 10G 0 rom /run/media/root/CentOS 7 x86_64
[root@CentOS7 ~]#echo "- - -" > /sys/class/scsi_host/host //使用tab補全路徑發現有多個文件 host0/ host1/ host2/ [root@CentOS7 ~]#echo "- - -" > /sys/class/scsi_host/host0/scan [root@CentOS7 ~]#lsblk //從新執行lsblk發現新添加的硬盤sdb顯示出來了 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 100G 0 part / ├─sda3 8:3 0 3G 0 part [SWAP] ├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 50G 0 part /data sdb 8:16 0 20G 0 disk sr0 11:0 1 10G 0 rom /run/media/root/CentOS 7 x86_64
一、如何快速將一個文件增大
[root@CentOS7 ~]# cp /dev/zero /boot/a.txt // /dev/zero爲設備文件,將設備文件複製到另文件內會瞬間增大存儲空間
查看磁盤被佔滿
[root@CentOS7 ~]# df -h Filesystem Size Used Avail Use% Mounted on ... /dev/sda1 1014M 1014M 32K 100% /boot ...
解決辦法一、:
刪除文件:
[root@CentOS7 ~]# rm -rf /boot/a.txt
注意:當要刪除的文件正在被使用時,文件顯示已被刪除,但內存仍然被佔滿。此時須要將正在使用的文件關閉便可。
查看被刪除的文件:
[root@CentOS7 ~]# lsof |grep /boot/a.txt vim 69356 root 3r REG 8,1 892141568 113 /boot/a.txt (deleted)
解決辦法2:使用/dev/null 文件的特性清空文件
[root@CentOS7 ~]# cat /dev/null > /data/f1.txt
[root@CentOS7 ~]# cat /dev/urandom |tr -dc 'a-zA-Z0-9' |head -c12 // 文件/dev/urandom內爲隨機字符,經過tr刪除除字母和數字的字符,經過head命令取前n個字符