本文共 11196 字,大约阅读时间需要 37 分钟。
由于这是学习linux的第一周,整理的东西很杂很分散,其中包括了查看虚拟机的各种信息,命令相关的只整理了alias、date、history、cal、帮助会话screen等命令的使用,最后加上了两个常见问题处理办法;在以后的学习中会不断完善文中整理的相关内容。
查看内核版本
[root@CentOS7 ~]#uname -r 3.10.0-957.el7.x86_64
查看系统版本
查看配置文件[root@CentOS7 ~]#cat /etc/redhat-release //CentosCentOS Linux release 7.6.1810 (Core) gong@ubuntu1804:~$ cat /etc/os-release //Ubuntu系统NAME="Ubuntu"VERSION="18.04.1 LTS (Bionic Beaver)"ID=ubuntuID_LIKE=debianPRETTY_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=bionicUBUNTU_CODENAME=bionic
使用lsb_release -a 命令[root@CentOS7 ~]#lsb_release -a //Centosgong@ubuntu1804:~$ lsb_release -a //Ubuntu系统No LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04.1 LTSRelease: 18.04Codename: bionic
查看内存大小
[root@CentOS7 ~]#free total used free shared buff/cache availableMem: 1475156 706280 110076 22952 658800 515300Swap: 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信息
[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% /devtmpfs 737576 0 737576 0% /dev/shmtmpfs 737576 10780 726796 2% /runtmpfs 737576 0 737576 0% /sys/fs/cgroup/dev/sda5 52403200 33036 52370164 1% /data/dev/sda1 1038336 167008 871328 17% /boottmpfs 147516 4 147512 1% /run/user/42tmpfs 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 MOUNTPOINTsr0 11:0 1 3.7G 0 rom /media/CentOS_6.10_Finalsda 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]
的区别
功能:显示字符
[root@CentOS7 ~]# echo 'hostname' //单引号为强引用,不替换引号中的变量hostname[root@CentOS7 ~]# echo `hostname` //反向单引号替换引号中的变量CentOS7.localdomain[root@CentOS7 ~]# echo "hostname" //双引号为弱引用,替换引号中的变量hostname [root@CentOS7 ~]# echo $(hostname) //$()替换变量的值CentOS7.localdomain
echo $(shell)
[root@CentOS7 ~]#echo $SHELL/bin/bash[root@CentOS7 ~]#echo ${SHELL}/bin/bash
cat /etc/shell
[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变量[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 cpcp: /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取别名namehash -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 timeoutbuiltin hash -p /usr/bin/tty ttybuiltin 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>缓存hashSource /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 +%F2019-03-16
%T 显示当前时分秒
[root@CentOS7 ~]#date +%T14:46:58
设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]
[root@CentOS7 data]#date 031614302019.30Sat 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: yesNTP 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:30Sat 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 ~]#dateSat 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
步骤:
1、添加一块虚拟硬盘2、使用lsblk 命令查看磁盘是否显示出来3、使用 [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 MOUNTPOINTsda 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 /datasr0 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 MOUNTPOINTsda 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 /datasdb 8:16 0 20G 0 disk sr0 11:0 1 10G 0 rom /run/media/root/CentOS 7 x86_64
1、如何快速将一个文件增大
[root@CentOS7 ~]# cp /dev/zero /boot/a.txt // /dev/zero为设备文件,将设备文件复制到另文件内会瞬间增大存储空间
查看磁盘被占满
[root@CentOS7 ~]# df -hFilesystem Size Used Avail Use% Mounted on.../dev/sda1 1014M 1014M 32K 100% /boot...
解决办法1、:
删除文件:[root@CentOS7 ~]# rm -rf /boot/a.txt
注意:当要删除的文件正在被使用时,文件显示已被删除,但内存仍然被占满。此时需要将正在使用的文件关闭即可。
查看被删除的文件:
[root@CentOS7 ~]# lsof |grep /boot/a.txtvim 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个字符
转载于:https://blog.51cto.com/14233815/2364119