@songlaf
2016-11-21T05:57:30.000000Z
字数 8779
阅读 640
Redhat
安装软件的命令格式:rpm -ivh filename.rpm
升级软件的命令格式:rpm -Uvh filename.rpm
卸载软件的命令格式:rpm -e filename.rpm
查询软件的描述信息的命令格式:rpm -qpi filename.rpm
列出软件的文件信息的命令格式:rpm -qpl filename.rpm
查询文件属于那个RPM的命令格式:rpm -qf filename
yum软件仓库的使用拓扑图
所有Yum仓库的配置文件均需以.repo结尾并存放在/etc/yum.repos.d/目录中的。
[rhel-media]: yum源的名称,可自定义。
name=linuxprobe : yum仓库的名称,可自定义。
baseurl=file:///media/cdrom :提供方式包括FTP(ftp://..)、HTTP(http://..)、本地(file:///..)
enabled=1 : 设置此源是否可用,1为可用,0为禁用。
gpgcheck=1 : 设置此源是否校验文件,1为校验,0为不校验。
gpgkey=file:///media/cdrom/RPM-GPG-KEY-redhat-release :若为校验请指定公钥文件地址。
yum repolist all 列出所有仓库。
yum list all 列出仓库中所有软件包
yum info 软件包名称 查看软件包信息
yum install 软件包名称 安装软件包
yum reinstall 软件包名称 重新安装软件包
yum update 软件包名称 升级软件包
yum remove 软件包 移除软件包
yum clean all 清除所有仓库缓存
yum check-update 检查可更新的软件包
yum grouplist 查看系统中已经安装的软件包组
yum groupinstall 软件包组 安装指定的软件包组
yum groupremove软件包组 移除指定的软件包组
yum groupinfo 软件包组 查询指定的软件包组信息
systemctl管理服务的启动、重启、停止、重载、查看状态的命令:
Sysvinit命令(红帽RHEL6系统) Systemctl命令(红帽RHEL7系统) 作用
service foo start systemctl start foo.service 启动服务
service foo restart systemctl restart foo.service 重启服务
service foo stop systemctl stop foo.service 停止服务
service foo reload systemctl reload foo.service 重新加载配置文件(不终止服务)
service foo status systemctl status foo.service 查看服务状态
systemctl设置服务的开机启动、不启动、查看各级别下服务启动状态的命令:
Sysvinit命令(红帽RHEL6系统) Systemctl命令(红帽RHEL7系统) 作用
chkconfig foo on systemctl enable foo.service 开机自动启动
chkconfig foo off systemctl disable foo.service 开机不自动启动
chkconfig foo systemctl is-enabled foo.service 查看特定服务是否为开机自启动
chkconfig --list systemctl list-unit-files --type=service 查看各个级别下服务的启动与禁用情况
man命令的常用操作按键:
按键 用处
空格键 向下翻一页。
[Page Down] 向下翻一页。
[Page Up] 向上翻一页。
[HOME] 直接前往首页。
[END] 直接前往尾页。
/关键词 从上至下搜索某个关键词,如"/linux"。
?关键词 从下至上搜索某个关键词,如"?linux"。
n 定位到下一个搜索到的关键词。
N 定位到上一个搜索到的关键词。
q 退出帮助文档。
一般来讲帮助文件都很长很多,如果你想翻看的话,就要理解帮助文档的目录结构与操作方法:
结构名称 代表意义
NAME 命令的名称
SYNOPSIS 参数的大致使用方法
DESCRIPTION 介绍说明
EXAMPLES 演示(附带简单说明)
OVERVIEW 概述
DEFAULTS 默认的功能
OPTIONS 具体的可用选项(带介绍)
ENVIRONMENT 环境变量
FILES 用到的文件
SEE ALSO 相关的资料
HISTORY 维护历史与联系方式
date命令用于显示及设置系统的时间或日期,格式为:"date [选项] [+指定的格式]"。
强大的date命令只需键入以"+"号开头的参数即可按照指定格式来输出系统的时间或日期,这样日常工作时咱们便可以将打包数据的备份命令与指定格式输出的时间信息结合到一起,使得咱们可以更加便捷的区分每个文件的备份时间啦,date命令常见的格式如下:
参数 作用
%t 跳格[TAB键]
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(00-59)
%S 秒(00-59)
%X 相当于%H:%M:%S
%Z 显示时区
%p 显示本地AM或PM
%A 星期几 (Sunday-Saturday)
%a 星期几 (Sun-Sat)
%B 完整月份 (January-December)
%b 缩写月份 (Jan-Dec)
%d 日(01-31)
%j 一年中的第几天(001-366)
%m 月份(01-12)
%Y 完整的年份
按照默认的格式查看当前的系统时间:
[root@linuxprobe ~]# date
Mon Aug 24 16:11:23 CST 2016
按照"年-月-日 小时:分钟:秒"的格式查看当前的系统时间:
[root@linuxprobe ~]# date "+%Y-%m-%d %H:%M:%S"
2016-08-24 16:29:12
设置当前的系统时间为2016年9月1日8点30分:
[root@linuxprobe ~]# date -s "20160901 8:30:00"
Tue Sep 1 08:30:00 CST 2016
再次按照默认的格式查看当前的系统时间:
[root@linuxprobe ~]# date
Tue Sep 1 08:30:01 CST 2016
查看今天是一年中的第几天:
[root@linuxprobe ~]# date "+%j"
245
reboot命令用于重启系统,格式为:"reboot"。
重启计算机这种操作会涉及到对硬件资源的管理权限,因此默认只能使用root用户来重启您的电脑:
[root@linuxprobe ~]# reboot
poweroff命令用于关闭系统,格式为:"poweroff"。
关机命令也同理,默认只有root用户才可以关闭您的电脑:
[root@linuxprobe ~]# poweroff
参数 作用
-b 后台下载模式。
-O 下载到指定目录。
-t 最大尝试次数。
-c 断点续传
-p 下载页面内所有资源,包括图片、视频等。
-r 递归下载
wget -r -p http://www.linuxprobe.com
递归下载《Linux就该这么学》的整站页面与所有资料,下载完成后会自动保存到当前目录中名字为"www.linuxprobe.com"的目录中:
ps命令用于查看系统中的进程状态,格式为:“ps [参数]”,同样搭配的参数如下:
当您第一次执行这个命令时估计要惊呆下,这么多输出值怎么看的过来?其实平常咱们会将ps命令与管道符来结合使用,用于来抓取到某个指定服务进程所对应的PID号码,而常见的ps命令参数包括有:
参数 作用
-a 显示所有的进程(包括其他用户的)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程
Linux系统中时刻运行着许许多多的进程,如果能够合理的管理它们,绝对有益于系统的性能优化,Linux系统中进程最常见的5种不同的状态是运行、中断、不可中断、僵死与停止,它们的特性分别是:
R(运行):正在运行或在运行队列中等待。
S(中断):休眠中, 在等待某个条件的形成或接收到信号。
D(不可中断):收到信号不唤醒和不可运行, 进程必须等待直到有中断发生。
Z:(僵死):进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放。
T:(停止):进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行。
top命令用于动态的监视进程活动与系统负载等信息,格式为:“top”
第1行:系统时间,运行时间,登陆用户数,系统负载(分别为1分钟、5分钟、15分钟的平均值)。
第2行:进程总数,运行中的,睡眠中的,停止的,僵死的。
第3行:用户占用资源,系统内核占用资源,改变过优先级的进程,空闲的资源,等待输入输出的时间。
此行数据均为CPU数据并以百分比格式显示,例如"99.2 id"意味着有99.2%的CPU资源正在空闲中。
第4行:物理内存总量,使用量,空闲量,作为内核缓存的内存量。
第5行:虚拟内存总量,使用量,空闲量,已被提前加载的内存数据。
pidof命令用于查询某个指定服务的进程PID号码值,格式为:“pidof [参数] [服务名称]”。
PID值是区别每个进程的号码,在不同的计算机上运行相同的服务程序都很少会获得同样值的PID号码,例如查询本机sshd服务程序的PID号码值:
[root@linuxprobe ~]# pidof sshd
2156
kill命令用于终止某个指定PID号码的进程,格式为:“kill [参数] [进程PID号]”。
[root@linuxprobe ~]# kill 2156
killall命令用于终止某个指定名称的服务所对应的全部进程,格式为:“killall
[参数] [进程名称]”。
用killall命令来批量结束某个服务程序带有的全部进程,例如结束掉网络服务的全部进程,下面咱们以httpd服务程序为例,默认您的RHEL7系统未安装它,所以此时只需看操作过程和结果即可:
[root@linuxprobe ~]# pidof httpd
13581 13580 13579 13578 13577 13576
[root@linuxprobe ~]# killall httpd
[root@linuxprobe ~]# pidof httpd
[root@linuxprobe ~]#
平时在系统终端中执行一个命令后如果想立即的停止它,您可以同时按下系统组合键"Ctrl+c",这样命令的进程将会立即被终止,是比较常用的方法之一。或者有些命令在执行时会不断的在屏幕上输出信息,影响到咱们继续输入命令了,此时便可以在执行这条命令前,将这段命令的最后面添加个"&"符号,那么从一开始执行该命令就会是在后台执行
ifconfig用于获取网卡配置与网络状态等信息:格式为"ifconfig [网络设备] [参数]"。
查看本机当前的网卡配置与网络状态等信息,咱们主要就是看每段开头的网卡名称、inet参数后面的IP地址、ether参数后面的物理mac地址以及RX、TX的接收与发送数据包的大小:
uname命令用于查看系统内核与系统版本等信息,格式为:“uname [-a]”。
一般咱们会固定搭配上-a参数来完整查看当前系统的内核名称、主机名、内核发行版本、节点名、系统时间、硬件名称、硬件平台、处理器类型以及操作系统名称等信息:
uptime命令用于查看系统的负载信息,格式为:“uptime”。
这个命令真的很棒,它可以为您显示当前系统时间、系统已运行时间、当前在线用户以及平均负载值等信息数据。平均负载值指的是最近1分钟、5分钟、15分钟的系统压力情况,负载值越低越好,尽量不要长期超过1。另外您还可以结合搭配用"watch -n 1 uptime"命令来每秒刷新一次来获得当前的系统负载情况。
free命令用于显示当前系统中内存的使用量信息,格式为:“free [-h]”。
who命令用于查看当前登入主机的用户终端信息,格式为:"who [参数]"。
last命令用于查看所有系统的登入记录,格式为:"last [参数]"。
其实仅仅是调取了过往保存到系统中的日志文件罢了,篡改里面的文字其实也很简单,因此对于做“黑客”入侵行为审计时其实并不牢靠,只能仅供咱们参考而已:
history命令用于显示历史执行过的命令,格式为:“history [-c]”。
这条命令应该是我最喜欢的了,history命令默认会保存1000条执行过的命令,若要修改可直接编辑/etc/profile文件的HISTSIZE值。它能显示出当前用户在本地计算机中执行过的所有命令记录,您可以使用-c参数来清空里面的历史数据,还可以使用“!编码数字”的方式来重复执行某一次的命令:
历史命令会被保存到用户家目录中的".bash_history"文件中。Linux系统中以点(.)开头的文件均代表隐藏文件,一般会是系统文件。
“cd -”命令来返回到上一次所处的目录,使用“cd ~”命令来切换到当前用户的家目录,而使用“cd ~username”则可以切换到其他用户的家目录了~
“-a”参数来看到全部文件(包括隐藏文件),再结合“-l”参数来查看文件的属性、大小等详细信息,如果需要看目录文件信息的话,需要额外添加一个-d参数才可以,
-n 显示行号
-n 查看多少航
tr命令用于替换文本文件中的字符,格式为:“tr [原始字符] [目标字符]”。
支持管道操作
cat anaconda-ks.cfg | tr [a-z] [A-Z]
wc命令用于统计指定文本的行数、字数、字节数,格式为“wc [参数] 文本”。
参数 作用
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
wc -l /etc/passwd
stat命令用于查看文件的具体存储信息和时间等信息,格式“stat 文件名称”。
cut命令用于按“列”来提取文本字符,格式为:“cut [参数] 文本”。
-f”参数来设置需要看的列数,还必须使用“-d”参数来设置间隔符号,因为passwd是用于保存用户信息数据的文件,而每一项值都是通过冒号来间隔(见下面head命令的输出演示)
cut -d: -f1 /etc/passwd
diff命令用于比较多个文本文件的差异,格式为:"diff [参数] 文件"。 “-c”参数来详细比较出多个文件的差异之处,
“--brief”参数来仅仅确认两个文件是否不同,
touch命令用于创建空白文件与设置文件的各种时间,格式为:“touch [选项] [文件]”。
咱们可以在修改一个文件前先查看下文件的修改时间,然后再通过touch命令将修改后的文件时间设置伪装成自己没有动过的一样,很多黑客就会这么做呢:
参数 作用
-a 仅修改“访问时间”(atime)
-m 仅修改“更改时间”(mtime)
-d 同时修改atime与mtime
参数 作用
-p 保留原始文件的属性
-d 若对象为"链接文件",则保留该"链接文件"的属性
-r 递归持续复制(用于目录)
-i 若目标文件存在则询问是否覆盖
-a 相当于-pdr(p,d,r为上述的参数)
首先“-c”参数是用于创建压缩文件的,
“-x”参数是用于解压文件的,因此这两个不能同时放一起使用,
其次“-z”参数是指定使用Gzip格式来压缩解压文件,
“-j”参数是指定使用bzip2参数来压缩解压文件,
“-v”参数来不断显示压缩或解压的过程给用户,
“-C”参数用于指定要解压到的那个指定的目录,
而“-f”参数特别重要,它必须放到参数的最后一位,代表要压缩或解压的软件包名称。
tar czvf etc.tar.gz /etc
tar xzvf etc.tar.gz -C /root/etc
“-n”参数显示搜索到信息的行号,
“-v”参数用于反选信息
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 匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件)
-prune 忽略某个目录
-exec {} \; 后面可接对搜索到结果进一步处理的命令(下面会有演示)
Linux系统中的配置文件根据FHS协议会被保存到/etc目录中(第六章精讲),如果咱们要想获取到该目录中所有以host开头的文件就可以这样做:
[root@linuxprobe ~]# find /etc -name "host*" -print
/etc/avahi/hosts
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/hostname
想要在整个系统中搜索所有权限中包括SUID权限的文件(第五章精讲),只需使用减号-4000即可:
[root@linuxprobe ~]# find / -perm -4000 -print
/usr/bin/fusermount
/usr/bin/su
/usr/bin/umount
/usr/bin/passwd
/usr/sbin/userhelper
/usr/sbin/usernetctl
………………省略部分输出信息………………
拔高题目:在整个的文件系统中找出所有归属于linuxprobe用户的文件并复制到/root/findresults目录。
此题的重点是"-exec {} \;"其中的{}代表find命令搜索出的逐个文件,并且记得命令的结尾必须是\;
[root@linuxprobe ~]# find / -user linuxprobe -exec cp -arf {} /root/findresults/ \;
读者们,辛苦了~你们有没有有觉得Linux中的“命令”真的很方便?下章中将会正式的使用到它们,做好准备吧!另外大家也几乎见到了所有Linux系统中日常用到的命令,但这仅仅是打好基础,为了今后能更加高效的管理主机,请一定要学习后来的Shell脚本课程。
标准输入(STDIN,文件描述符为0):默认从键盘输入,为0时表示是从其他文件或命令的输出。
标准输出(STDOUT,文件描述符为1):默认输出到屏幕,为1时表示是文件。
错误输出(STDERR,文件描述符为2):默认输出到屏幕,为2时表示是文件。
对于输入重定向有这些情况:
符号 作用
命令 < 文件 将文件作为命令的标准输入
命令 << 分界符 从标准输入中读入,直到遇见“分界符”才停止
命令 < 文件1 > 文件2 将文件1作为命令的标准输入并将标准输出到文件2
对于输出重定向符有这些情况:
符号 作用
命令 > 文件 将标准输出重定向到一个文件中(清空原有文件的数据)
命令 2> 文件 将错误输出重定向到一个文件中(清空原有文件的数据)
命令 >> 文件 将标准输出重定向到一个文件中(追加到原有内容的后面)
命令 2>> 文件 将错误准输出重定向到一个文件中(追加到原有内容的后面)
命令 >> 文件 2>&1 或 命令 &>> 文件 将标准输出与错误输出共同写入到文件中(
[root@linuxprobe ~]# ls -l xxxxxx
cannot access xxxxxx: No such file or directory
[root@linuxprobe ~]# ls -l xxxxxx > /root/stderr.txt
cannot access xxxxxx: No such file or directory
[root@linuxprobe ~]# ls -l xxxxxx 2> /root/stderr.txt
[root@linuxprobe ~]# cat /root/stderr.txt ls:
cannot access xxxxxx: No such file or directory
(*)就是代表匹配零个或多个字符,
问号(?)是代表匹配单个字符,
([0-9])代表匹配单个阿拉伯数字的字符
([abc])则是代表匹配单个指定的英文字母。
斜杠()的作用就是转义后面的一个字符变为单纯的字符串,
单引号('')则是转义其中所有的字符为单纯的字符串,
而双引号("")是保留其中的变量属性不转义,
反引号(``)则是将其中的命令执行后返回一个结果。
uname -a命令结合通过返回值来查看下本机版本和内核信息吧: