一、常用系统工作命令(Linux系统里面的一切都是文件,配置一个服务也就是在修改这个服务的配置文件,修改之后需要重启这个服务。)
setterm -blank 0 //禁用屏保
(1)echo命令
将我们输入的信息的参数命令输出来,比方说我们现在要查看SHELL的变量值(前面有$S)
(2)date命令:date命令用于显示及设置系统的时间或日期,格式为“date [选项] [+指定的格式]”;
只需在强大的date命令中输入以“+”号开头的参数,即可按照指定格式来输出系统的时间或日期,这样在日常工作时便可以把备份数据的命令与指定格式输出的时间信息结合到一起。例如,把打包后的文件自动按照“年-月-日”的格式打包成“backup-2017-9-1.tar.gz”,用户只需要看一眼文件名称就能大概了解到每个文件的备份时间了。
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
(3)reboot命令:重启;
(4)poweroff命令:用于关闭系统;
(5)wget命令:wget命令用于在终端中下载网络文件;
(6)PS命令:用于查看系统中的进程状态;
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该 状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):进程收到停止信号后停止运行。
-a | 显示所有进程(包括其他用户的进程) |
-u | 用户以及其他详细信息 |
-x | 显示没有控制终端的进程 |
短格式和短格式之间可以合并,但是要去掉多余的-;
(7)top命令:top命令用于动态地监视进程活动与系统负载等信息;(很重要)
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
(8)pidof命令:用于查询某个指定服务进程的PID值
kill命令
kill命令用于终止某个指定PID的服务进程
killall命令
killall命令用于终止某个指定名称的服务所对应的全部进程
(9)systemctl:查看服务的状态;(id号是临时的,所以与上面的1453不同)
二、系统状态检测命令
(1)ifconfig命令:ifconfig命令用于获取网卡配置与网络状态等信息;
(2)uname命令:uname命令用于查看系统内核与系统版本等信息
(3)uptime命令:uptime用于查看系统的负载信息
(4)free命令:free用于显示当前系统中内存的使用量信息
(5)who命令/w:who用于查看当前登入主机的用户终端信息
(6)last命令:last命令用于查看所有系统的登录记录(并不能判断系统是否被入侵,因为他是可以被篡改的)
(7)history命令:history命令用于显示历史执行过的命令(总共默认保存一千条,可以修改)
vim /etc/profile 修改history size的大小。
cat命令查看其文件内容。
[root@linuxprobe ~]# cat ~/.bash_history
要清空当前用户在本机上执行的Linux命令历史记录信息,可执行如下命令:
[root@linuxprobe ~]# history -c
如果我们想要重复执行上面的命令则使用!+序号+回车
(8)sosreport命令:sosreport命令用于收集常见的系统配置及架构信息并输出诊断文档。发送给第三方;
三、工作目录切换命令
(1)pwd命令:pwd命令用于显示用户当前所处的工作目录(你所看到的文件是取决于当前所在的目录的)
[root@localhost ~]# pwd
/root
(2)cd命令:cd命令用于切换工作路径(切换到我们所想切换的目录)
[root@localhost ~]# cd /home
[root@localhost home]# pwd
/home
[root@localhost home]#
通过下面的命令快速切换到用户的家目录:
[root@linuxprobe etc]# cd ~ [root@linuxprobe ~]#
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd /home
[root@localhost home]# pwd
/home
[root@localhost home]# cd -
/root
要返回到上一级(层)的目录(cd ..)
(3)ls命令:ls命令用于显示目录中的文件信息
ls -a -l 用于查看所有的详细的文件。
三、文本文件编辑命令
(1)cat命令:cat命令用于查看纯文本文件(内容较少的);
如果在查看文本内容时还想顺便显示行号的话,不妨在cat命令后面追加一个-n参数:
[root@linuxprobe ~]# cat -n initial-setup-ks.cfg 1 #version=RHEL7 2 # X Window System configuration information 3 xconfig --startxonboot 4 5 # License agreement 6 eula --agreed 7 # System authorization information 8 auth --enableshadow --passalgo=sha512 9 # Use CDROM installation media 10 cdrom 11 # Run the Setup Agent on first boot 12 firstboot --enable 13 # Keyboard layouts 14 keyboard --vckeymap=us --xlayouts='us' 15 # System language 16 lang en_US.UTF-8 ………………省略部分输出信息………………
(2)more命令:more命令用于查看纯文本文件(内容较多的);
如果需要阅读长篇小说或者非常长的配置文件,那么“小猫咪”可就真的不适合了。因为一旦使用cat命令阅读长篇的文本内容,信息就会在屏幕上快速翻滚,导致自己还没有来得及看到,内容就已经翻篇了。因此对于长篇的文本内容,推荐使用more命令来查看。
如果不能判断想要查看的文件是大文件还是小文件,推荐使用more命令,因为不仅可以查看大文件还可以查看小文件。
[root@localhost ~]# more /etc/fstab
#
# /etc/fstab
# Created by anaconda on Tue Mar 20 15:23:46 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=dab6590c-8993-46fc-bcd4-18dc02e47bfc /boot xfs defaul
ts 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
(3)head命令:head命令用于查看纯文本文档的前N行;如果只想查看文本中前20行的内容,该怎么办呢?
[root@linuxprobe ~]# head -n 20 initial-setup-ks.cfg
#version=RHEL7
# X Window System configuration information
xconfig --startxonboot
# License agreement
eula --agreed
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
cdrom
# Run the Setup Agent on first boot
firstboot --enable
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8
ignoredisk --only-use=sda
# Network information
network --bootproto=dhcp --device=eno16777728 --onboot=off --ipv6=auto
[root@linuxprobe ~]#
(4)tail命令:tail命令用于查看纯文本文档的后N行或持续刷新内容;需要查看文本内容的最后20行,这时就需要用到tail命令了。tail命令最强悍的功能是可以持续刷新一个文件的内容,当想要实时查看最新日志文件时,这特别有用,此时的命令格式为“tail -f 文件名”;
[root@linuxprobe ~]# tail -f /var/log/messages
May 4 07:56:38 localhost gnome-session: Window manager warning: Log level 16: STACK_OP_ADD: window 0x1e00001 already in stack
May 4 07:56:38 localhost gnome-session: Window manager warning: Log level 16: STACK_OP_ADD: window 0x1e00001 already in stack
May 4 07:56:38 localhost vmusr[12982]: [ warning] [Gtk] gtk_disable_setlocale() must be called before gtk_init()
May 4 07:56:50 localhost systemd-logind: Removed session c1.
Aug 1 01:05:31 localhost systemd: Time has been changed
Aug 1 01:05:31 localhost systemd: Started LSB: Bring up/down networking.
Aug 1 01:08:56 localhost dbus-daemon: dbus[1124]: [system] Activating service name='com.redhat.SubscriptionManager' (using servicehelper)
Aug 1 01:08:56 localhost dbus[1124]: [system] Activating service name='com.redhat.SubscriptionManager' (using servicehelper)
Aug 1 01:08:57 localhost dbus-daemon: dbus[1124]: [system] Successfully activated service 'com.redhat.SubscriptionManager'
Aug 1 01:08:57 localhost dbus[1124]: [system] Successfully activated service 'com.redhat.SubscriptionManager'
(5)
tr命令:tr命令用于替换文本文件中的字符;先使用cat命令读取待处理的文本,然后通过管道符(shift+enter上面那个键)把这些文本内容传递给tr命令进行替换操作即可。例如,把某个文本内容中的英文全部替换为大写:[root@linuxprobe ~]# cat anaconda-ks.cfg | tr [a-z] [A-Z] #VERSION=RHEL7 # SYSTEM AUTHORIZATION INFORMATION AUTH --ENABLESHADOW --PASSALGO=SHA512 # USE CDROM INSTALLATION MEDIA CDROM # RUN THE SETUP AGENT ON FIRST BOOT FIRSTBOOT --ENABLE IGNOREDISK --ONLY-USE=SDA # KEYBOARD LAYOUTS KEYBOARD --VCKEYMAP=US --XLAYOUTS='US' # SYSTEM LANGUAGE LANG EN_US.UTF-8
wc的参数以及作用
参数 | 作用 |
-l | 只显示行数 |
-w | 只显示单词数 |
-c | 只显示字节数 |
[root@localhost ~]# wc -l /etc/passwd
38 /etc/passwd
[root@localhost ~]# wc -c anaconda-ks.cfg
1246 anaconda-ks.cfg
[root@localhost ~]# wc -w /etc/passwd
66 /etc/passwd
(7)stat命令:stat命令用于查看文件的具体存储信息和时间等信息;
[root@linuxprobe ~]# stat anaconda-ks.cfg File: ‘anaconda-ks.cfg’ Size: 1213 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 68912908 Links: 1 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Context: system_u:object_r:admin_home_t:s0 Access: 2017-07-14 01:46:18.721255659 -0400(最近一次查看文件的时间) Modify: 2017-05-04 15:44:36.916027026 -0400(最近一次文件内容的修改时间) Change: 2017-05-04 15:44:36.916027026 -0400(最近一次文件权限或属性的更改时间) Birth: -
(8)cut命令:cut命令用于按“列”提取文本字符;
一般而言,按基于“行”的方式来提取数据是比较简单的,只需要设置好要搜索的关键词即可。但是如果按列搜索,不仅要使用-f参数来设置需要看的列数,还需要使用-d参数来设置间隔符号。passwd在保存用户数据信息时,用户信息的每一项值之间是采用冒号来间隔的,接下来我们使用下述命令尝试提取出passwd文件中的用户名信息,即提取以冒号(:)为间隔符号的第一列内容:
[root@localhost ~]# cut -d : -f 1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
(9)diff命令:diff命令用于比较多个文本文件的差异;在使用diff命令时,不仅可以使用--brief参数来确认两个文件是否不同,还可以使用-c参数来详细比较出多个文件的差异之处,这绝对是判断文件是否被篡改的有力神器。
[root@localhost ~]# vim a.text
[root@localhost ~]# vim b.text
[root@localhost ~]# cat a.text
Welcome to linuxprobe.com
Red Hat certified
Free Linux Lessons
Professional guidance
Linux Course
[root@localhost ~]# cat b.text
Welcome tooo linuxprobe.com
Red Hat certified
Free Linux LeSSonS
////////.....////////
Professional guidance
Linux Course
[root@localhost ~]# diff --brief
diff: missing operand after '--brief'
diff: Try 'diff --help' for more information.
[root@localhost ~]# diff --brief a.text b.text
Files a.text and b.text differ
[root@localhost ~]# diff -c a.text b.text
*** a.text 2018-03-23 14:16:54.719693154 +0800
--- b.text 2018-03-23 14:17:31.336692224 +0800
***************
*** 1,5 ****
! Welcome to linuxprobe.com
Red Hat certified
! Free Linux Lessons
Professional guidance
Linux Course
--- 1,7 ----
! Welcome tooo linuxprobe.com
!
Red Hat certified
! Free Linux LeSSonS
! ////////.....////////
Professional guidance
Linux Course
四、
文件目录管理命令
(1)touch命令:touch命令用于创建空白文件或设置文件的时间;(只是文本文档)
touch命令的参数及其作用
参数 | 作用 |
-a | 仅修改“读取时间”(atime) |
-m | 仅修改“修改时间”(mtime) |
-d | 同时修改atime与mtime |
[root@localhost ~]# touch haha
[root@localhost ~]# ls
anaconda-ks.cfg Desktop haha Pictures Videos
a.text Documents initial-setup-ks.cfg Public
b.text Downloads Music Templates
[root@localhost ~]# cat haha
[root@localhost ~]# ls -l haha
-rw-r--r--. 1 root root 0 Mar 23 14:27 haha
[root@localhost ~]# echo "welcome to haha">haha
[root@localhost ~]# cat haha
welcome to haha
通过touch命令把修改后的文件时间设置成修改之前的时间
[root@localhost ~]# ls -l haha
-rw-r--r--. 1 root root 16 Mar 23 14:27 haha
[root@localhost ~]# touch -d "19:20" haha
[root@localhost ~]# ls -l haha
-rw-r--r--. 1 root root 16 Mar 23 2018 haha
[root@localhost ~]# cat haha
welcome to haha
(2)
mkdir命令:mkdir命令用于创建空白的目录;
[root@localhost ~]# mkdir huazhao
[root@localhost ~]# ls
anaconda-ks.cfg Desktop haha Music Templates
a.text Documents huazhao Pictures Videos
b.text Downloads initial-setup-ks.cfg Public
[root@localhost ~]# cd huazhao
[root@localhost huazhao]# ls
[root@localhost huazhao]# pwd
/root/huazhao
若是想嵌套创建目录则通过-p命令来实现:
[root@localhost huazhao]# mkdir a/b/c/d
mkdir: cannot create directory ‘a/b/c/d’: No such file or directory
[root@localhost huazhao]# mkdir -p a/b/c/d
(3)cp命令:cp命令用于复制文件或目录;
如果目标文件是目录,则会把源文件复制到该目录中;
如果目标文件也是普通文件,则会询问是否要覆盖它;
如果目标文件不存在,则执行正常的复制操作。
cp命令的参数及其作用
参数 | 作用 |
-p | 保留原始文件的属性 |
-d | 若对象为“链接文件”,则保留该“链接文件”的属性 |
-r | 递归持续复制(用于目录) |
-i | 若目标文件存在则询问是否覆盖 |
-a | 相当于-pdr(p、d、r为上述参数) |
[root@localhost ~]# touch install.log
[root@localhost ~]# ls
anaconda-ks.cfg Desktop huazhao Music Templates
a.text Documents initial-setup-ks.cfg Pictures Videos
b.text Downloads install.log Public
[root@localhost ~]# cp install.log x.log
[root@localhost ~]# ls
anaconda-ks.cfg Desktop huazhao Music Templates
a.text Documents initial-setup-ks.cfg Pictures Videos
b.text Downloads install.log Public x.log
(4)mv命令:mv命令用于剪切文件或将文件重命名;
剪切操作不同于复制操作,因为它会默认把源文件删除掉,只保留剪切后的文件。如果在同一个目录中对一个文件进行剪切操作,其实也就是对其进行重命名:
[root@linuxprobe ~]# mv x.log linux.log [root@linuxprobe ~]# ls install.log linux.log
(5)rm命令:rm命令用于删除文件或目录;
dd命令的参数及其作用
参数 | 作用 |
if | 输入的文件名称 |
of | 输出的文件名称 |
bs | 设置每个“块”的大小 |
count | 设置要复制“块”的个数 |
一共取了15*2=30个字节;但在Linux系统中可以直接使用dd命令来压制出光盘镜像文件,将它变成一个可立即使用的iso镜像,bs与count都是用来指定容量的大小,只要能满足需求,可随意组合搭配方式。
(7)file命令:file命令用于查看文件的类型;
[root@localhost ~]# ls
anaconda-ks.cfg Downloads install.log Public x.log
Desktop hehe.cfg Music Templates
Documents initial-setup-ks.cfg Pictures Videos
[root@localhost ~]# file Downloads
Downloads: directory
[root@localhost ~]# file x.log
x.log: empty
[root@localhost ~]#
五、打包压缩与搜索命令
(1)tar命令:tar命令用于对文件进行打包压缩或解压;
tar命令的参数及其作用
参数 | 作用 |
-c | 创建压缩文件 |
-x | 解开压缩文件 |
-t | 查看压缩包内有哪些文件 |
-z | 用Gzip压缩或解压 |
-j | 用bzip2压缩或解压 |
-v | 显示压缩或解压的过程 |
-f | 目标文件名 |
-p | 保留原始的权限与属性 |
-P | 使用绝对路径来压缩 |
-C | 指定解压到的目录 |
使用“tar -czvf 压缩包名称.tar.gz 要打包的目录”命令把指定的文件进行打包压缩;相应的解压命令为“tar -xzvf 压缩包名称.tar.gz”。下面我们来逐个演示下打包压缩与解压的操作。先使用tar命令把/etc目录通过gzip格式进行打包压缩,并把文件命名为etc.tar.gz:
[root@linuxprobe ~]# tar czvf etc.tar.gz /etc tar: Removing leading `/' from member names /etc/ /etc/fstab /etc/crypttab /etc/mtab /etc/fonts/ /etc/fonts/conf.d/ /etc/fonts/conf.d/65-0-madan.conf /etc/fonts/conf.d/59-liberation-sans.conf /etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf /etc/fonts/conf.d/59-liberation-mono.conf /etc/fonts/conf.d/66-sil-nuosu.conf ………………省略部分压缩过程信息………………
接下来将打包后的压缩包文件指定解压到/root/etc目录中(先使用mkdir命令来创建/root/etc目录):
[root@linuxprobe ~]# mkdir /root/etc [root@linuxprobe ~]# tar xzvf etc.tar.gz -C /root/etc etc/ etc/fstab etc/crypttab etc/mtab etc/fonts/ etc/fonts/conf.d/ etc/fonts/conf.d/65-0-madan.conf etc/fonts/conf.d/59-liberation-sans.conf etc/fonts/conf.d/90-ttf-arphic-uming-embolden.conf etc/fonts/conf.d/59-liberation-mono.conf etc/fonts/conf.d/66-sil-nuosu.conf etc/fonts/conf.d/65-1-vlgothic-gothic.conf etc/fonts/conf.d/65-0-lohit-bengali.conf etc/fonts/conf.d/20-unhint-small-dejavu-sans.conf ………………省略部分解压过程信息………………
压缩:tar czvf backup.gz /home
解压:tar xzvf backup.gz -C 解压到哪里去
(2)grep命令:grep命令用于在文本中执行关键词搜索,并显示匹配的结果;
grep命令的参数及其作用
参数 | 作用 |
-b | 将可执行文件(binary)当作文本文件(text)来搜索 |
-c | 仅显示找到的行数 |
-i | 忽略大小写 |
-n | 显示行号(常用) |
-v | 反向选择——仅列出没有“关键词”的行。(常用) |
(3)find命令:find命令用于按照指定条件来查找文件;
find命令中的参数以及作用
参数 | 作用 |
-name | 匹配名称 |
-perm | 匹配权限(mode为完全匹配,-mode为包含即可) |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | 匹配修改内容的时间(-n指n天以内,+n指n天以前) |
-atime -n +n | 匹配访问文件的时间(-n指n天以内,+n指n天以前) |
-ctime -n +n | 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比文件f1新但比f2旧的文件 |
--type b/d/c/p/l/f | 匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件) |
-size | 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件) |
-prune | 忽略某个目录 |
-exec …… {}\; | 后面可跟用于进一步处理搜索结果的命令(下文会有演示) |
比方说:我们要搜索系统当中Linuxprobe的用户文件,则输入命令如下所示:
进阶:在整个文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录。
该实验的重点是“-exec {} \;”参数,其中的{}表示find命令搜索出的每一个文件,并且命令的结尾必须是“\;”-rf属于强制复制。完成该实验的具体命令如下:
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -rf {} /root/findresults/ \;
下面说几个本节内容中比较常见但又重点的问题:
1.在RHEL 7系统及众多的Linux系统中,最常使用的Shell终端是什么?
答:Bash(Bourne-Again SHell)解释器。
2.执行Linux系统命令时,添加参数的目的是什么?
答:为了让Linux系统命令能够更贴合用户的实际需求进行工作。
3.Linux系统命令、命令参数及命令对象之间,普遍应该使用什么来间隔?
答:应该使用一个或多个空格进行间隔。
4.请写出用echo命令把SHELL变量值输出到屏幕终端的命令。
答:echo $SHELL。
5.简述Linux系统中5种进程的名称及含义。
答:在Linux系统中,有下面5种进程名称。
R(运行):进程正在运行或在运行队列中等待。
S(中断):进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
D(不可中断):进程不响应系统异步信号,即便用kill命令也不能将其中断。
Z(僵死):进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
T(停止):
6.请尝试使用Linux系统命令关闭PID为5529的服务进程。
答:执行kill 5529命令即可;若知道服务的名称,则可以使用killall命令进行关闭。
7.使用ifconfig命令查看网络状态信息时,需要重点查看的4项信息分别是什么?
答:这4项重要信息分别是网卡名称、IP地址、网卡物理地址以及RX/TX的收发流量数据大小。
8.使用uptime命令查看系统负载时,对应的负载数值如果是0.91、0.56、0.32,那么最近15分钟内负载压力最大的是哪个时间段?
答:通过负载数值可以看出,最近1分钟内的负载压力是最大的。
9.使用history命令查看历史命令的执行记录时,命令前面的数字除了排序外还有什么用处?
答:还可以用“!数字”的命令格式重复执行某一次的命令记录,从而避免了重复输入较长命令的麻烦。
10.若想查看的文件具有较长的内容,那么使用cat、more、head、tail中的哪个命令最合适?
答:文件内容较长,使用more命令;反之使用cat命令。
11.在使用mkdir命令创建有嵌套关系的目录时,应该加上什么参数呢?
答:应该加上-p递归迭代参数,从而自动化创建有嵌套关系的目录。
12.在使用rm命令删除文件或目录时,可使用哪个参数来避免二次确认呢?
答:可使用-f参数,这样即可无需二次确认。
13.若有一个名为backup.tar.gz的压缩包文件,那么解压的命令应该是什么?
答:应该用tar命令进行解压,执行tar -xzvf backup.tar.gz命令即可。
14.使用grep命令对某个文件进行关键词搜索时,若想要进行文件内容反选,应使用什么参数?
答:可使用-v参数来进行匹配内容的反向选择,即显示出不包含某个关键词的行。
这一节花费的时间太长了,用了好几天才补充完整。。。(*^▽^*)