linux系统中的一切都是文件
linux系统中的一切都是文件
linux系统中的一切都是文件
2.1 Shell
计算机硬件是有运算器、控制器、存储器、输入输出设备共同组成,而让各硬件设备各司其职有协同合作的东西就是系统内核。
linux系统内核主要负责完成对硬件资源的分配、调度等管理任务
shell(终端或壳)的作用,用户把命令告诉终端,终端便会调用相应的程序服务无完成某些工作
主流linux系统选择Bash(Bourne-Again SHell)解释器作为命令行终端有以下4项优势
1.上下键可以调取过完执行过的linux指令
2.命令或者参数只需要前几位就可以用Tab键补全
3.具有强大的批处理脚本
4.具有实用的环境变量功能
常见的Linux命令格式:
命令名称 [命令参数] [命令对象]
2.2 查看帮助指令
man
2.3 常用系统工作命令
echo命令 输出字符串或者变量提取后的值,格式是“echo [字符串 | $变量]”
[linuxprobe@linuxprobe Desktop]$ echo adssdfasdf
adssdfasdf
[linuxprobe@linuxprobe Desktop]$ echo $SHELL
/bin/bash
date 显示和设置系统的时间或日期
命令格式 :data [选项] [+指定的格式]
[linuxprobe@linuxprobe Desktop]$ date
Thu Feb 21 20:42:32 KST 2019
[linuxprobe@linuxprobe Desktop]$ date "+%Y-%m-%d %H:%M:%S"
2019-02-21 20:43:50
[linuxprobe@linuxprobe Desktop]$ date -s "20170901 8:30:00" // 设置系统时间
date: cannot set date: Operation not permitted
Fri Sep 1 08:30:00 KST 2017
[linuxprobe@linuxprobe Desktop]$ date "+%j" //显示今天是当年的第几天
052
reboot命令用于重启系统
poweroff命令用于关闭系统
wget命令用于在终端中下载网络文件 格式为“wget[参数] 下载地址”
命令的参数以及作用看书本35页
ps命令用于查看系统中的进程状态,格式为“ps[参数]”
-a 显示所有进程 (包括其他用户的进程)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程
5中常见的进程状态及其含义
R(运行):进程正在运行或者在运行队列中等待
S(中断):进程处于休眠中,当某个条件形成后或者接受到信号时,则脱离该状态
D(不可中断):进程不响应系统异步信号,即使kill命令也无法将其停止
Z(僵死):进程已经终止,但进程的描述符依然存在,知道父进程调用wait4()系统函数后将其释放
T(停止):进程收到停止信号后停止运行
注:linux系统中的命令参数有长参数和短格式之分,长格式和短格式之间不能合并,但是短格式和短格式之间可以合并,合并后仅保留一个减号即可,另外ps这个命令允许参数不加减号
top命令用于动态地查看进程活动与系统负载等信息,格式为top,因此该指令相当强大,相当于windows任务管理器
显示的各行的具体内容看38页
pidof命令用于查询某个服务器进程PID值,格式为 “pidof [参数] [服务名称]”
每个进程的进程号码值(PID)是唯一的,故可以用PID来区分不同的进程
kill命令强行终止某个指定的PID服务进程,格式为“kill [参数] [进程PID]”
killall用于终止某个指定名称的服务器所对应的全部进程,格式为“killall [参数] [进程名称]”
注:如果在终端执行一条命令时想立即停止该命令,可通过同时按下ctrl+C来实现
如果命令在执行时不断地在屏幕上不断输出信息,影响后续命令的输入,可以在执行命令时在最后添加&符号,这样命令就会进入后台执行
2.4 系统状态监测命令
为了快速查看linux系统的运行状态,接下来将讲解与网卡网络、系统内核、系统负载、内存使用情况、当前启动终端数量、历史登录记录、命令执行记录以及救援诊断等相关命令的使用方法
这些指令都需要我们认真学习
ifconfig命令用于获取网卡配置与网络状态等信息,格式为 “ifconfig [网络设备] [参数]”
主要查看的是网卡名称、inet参数后面的IP地址、ether参数后面的网卡物理地址(MAC地址),以及RX、TX的接收数据包和发送数据包的数量和累计流量
uname 命令用于查看系统内核与系统版本等信息,格式为“uname [-a]”
若要看当前版本的详细信息,则需要查看Redhat-release文件
uptime命令用于查看系统的负载信息,格式为uptime
该命令很好,它可以显示当前系统时间、系统已运行时间、启动终端数量以及平均负载值等信息
平均负载值指的是系统在最近1/5/15分钟内的压力情况
[linuxprobe@linuxprobe Desktop]$ uptime
23:17:00 up 3:36, 2 users, load average: 0.00, 0.01, 0.05
负载值越低越好,尽量不要超过1,在生产环境中尽量不要超过5
free命令用于显示当前系统中内存的使用信息,格式为“free [-h]”
[linuxprobe@linuxprobe Desktop]$ free -h
total used free shared buffers cached
Mem: 1.9G 1.3G 667M 9.8M 928K 338M
-/+ buffers/cache: 980M 1.0G
Swap: 2.0G 0B 2.0G
shared:进程共享的内存量 buffers磁盘缓存的内存量 cached 缓存的内存量
who命令用于查看当前登入主机的用户终端信息,格式为“who [参数]”
last命令用于查看所有系统的登录记录,格式为“last [参数]”
history命令用于显示历史执行过的命令,格式为“history [-c]”
历史命令会被保留在用户家目录中的.bash_history 文件中、Linux系统以.开头的文件代表隐藏文件,这些文件大多数为系统服务文件,可以用cat命令查看其文件内容
要查看历史记录用history 清空历史记录则是用history -c
命令前面的数字除了排序还可以通过“!数字”的命令格式重复执行某一次的命令记录
[linuxprobe@linuxprobe Desktop]$ history
1 man
2 manm man
3 man man
4 cat diff_A.txt
5 cat TRANS.TBL
6 cat EULA
7 ls -l EUAL
8 ls -l EULA
[linuxprobe@linuxprobe Desktop]$ !3 //这样便能执行第三条语句
sosreport 命令用于收集系统配置及架构信息并输出诊断文档,格式为sosreport
2.5 工作目录切换命令
工作目录指的是用户当前在系统中所处的位置,与系统存储结构相关
pwd命令用于显示用户当前所处的工作目录,格式为“pwd [选项]”
ct命令用于切换工作路径,格式为“cd [目录名称]”
这条命令时最常用的一个Linux命令,“cd-”命令返回到上一次所处的目录,“cd..”命令进入上级目录
“cd~”切换到当前用户的家目录 “cd~username”切换到其他用户的家目录
ls命令用于显示目录中的文件信息,格式“ls [选项] [文件]”
2.6 文本文件编辑命令
Linux系统中的“一切都是文件“,对服务进程进行配置自然也就是编程程序的配置文件。查阅系统或服务器的配置文件很重要。
本节讲解的主要内容为查看文本文件内容的命令,编辑器的使用将会在第四章讲解
cat命令 用于查看(内容较少的)纯文本文件,格式为“cat [选项] [文件]”,若想显示行号,则需要在cat命令后面追加一个-n参数
more命令用于查看内容较多的纯文本文件,格式为“more [选项] [文件]”
会在最下面显示阅读了百分之几的内容,还可以用空格回车翻页
head命令为查看纯文档的前N行,格式为“head -n 数量 文件”
tial命令为查看纯文档后N行或者持续刷新的内容,格式同上
若想持续刷新一个文件的内容,或者实时查看最新文件日志,则用“tail -f 文件名”
tr命令用于替换文本文件中的字符,格式“tr [原始字符] [目标字符]”
若想将文本中的小写全部换成大写的,可用
“cat 文件名 | tr [a-z] [A-Z]”
wc命令用于统计文本中的函数、字数、字节数,格式为“wc [参数] 文本”
-l显示行数 -w显示单词数 -c显示字节数
stat命令用于查看文件的具体存储信息和时间等信息,格式为“stat 文件名称”
cut命令用于按“列”提取文本字符,格式为“cut [参数] 文本”
-f参数来决定需要看到的列数,-d参数来设置间隔符号(即每一行到什么符号为止就要跳到下一列)
cut -d: -f1 文件名 (间隔符是:)
diff命令用于比较多个文本文件的差异,格式为“diff [参数] 文件”
--brief参数用于确认另个文件是否相同,-c参数来详细比较多个文件的差异之处,从而判断文件是否被篡改
2.7 文件目录管理命令
日常运维中需要掌握对文件件的创建、修改、复制、剪切、更名、删除等操作
touch命令用于创建空白文件或者设置文件的时间,格式为“touch 选项 文件”
-a仅修改“读取时间”(atime) -m仅修改“修改时间”(mtime) -d同时修改atime和mtime
touch -d “时间” 文件名
mkdir命令 用于创建空白的目录,格式为“mkdir 选项 目录”
cp 命令用于复制文件或者目录,格式为“cp 选项 源文件 目标文件”,cp命令的参数及其作用看书本52页
linux系统中复制操作具体分为两种
如果目标文件时目录,则会把源文件复制到该目录中
如果源文件也是普通文件,则会询问是否覆盖它
如果目标文件不存在,则执行正常的复制操作
mv命令用于剪切文件或者将文件重命名,格式为“mv [选项] 源文件 [目标路径|目标文件名]”
rm命令用于删除文件或者目录,格式为“rm [选项] 文件”
-f强制删除 -r删除一个目录
dd命令用于按照指定大小和个数的数据块来复制文件或转移文件,格式为“dd [参数]”
通过该指令可以创建任意大小的文件
if 输入的文件名称 of输出的文件名称 bs设置每个“块”的大小 count 设置要复制“块”的个数
[linuxprobe@linuxprobe Desktop]$ dd if=asd of=zxc count=1 count=560M
0+1 records in
0+1 records out
104 bytes (104 B) copied, 0.000173001 s, 601 kB/s
file命令用于查看文件类型
2.8 打包压缩和搜索命令
命令有tar grep find 但参数多,这里不意义列举,详情看书本54页
tar命令用于对文件进行打包压缩或解压,格式为:“tar [参数] [文件]”
grep命令用于在文本中执行关键词搜索,并显示匹配结果,格式为“grep [参数] [文件]”
两个最关键的参数
-n 用来显示搜索到信息的行号
-v用于反选信息(即没有包含关键词的所有信息行)
linux系统中/etc/passwd文件时保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin,则不再允许登录系统,因此可以用grep来寻找当前系统中不允许登录系统的所有用户信息
[linuxprobe@linuxprobe /]$ grep /sbin/nologin /etc/passwd
find 命令用于按照指定条件来查找文件,格式为“find [查找路径] 寻找条件 操作”
重要参数 -exec该参数将find命令搜索到的结果交友紧随其后的命令做进一步处理
获取该目录中所有已s开头的文件列表,linux系统中的配置文件会保存在/etc目录中
[linuxprobe@linuxprobe /]$ find /etc -name "s*" -print //-name匹配名称 -prune忽略某个目录
/etc/pki/ca-trust/source
/etc/pki/nssdb/secmod.db
find: ‘/etc/pki/CA/private’: Permission denied
find: ‘/etc/pki/rsyslog’: Permission denied
/etc/ssh
/etc/ssh/ssh_config
/etc/ssh/sshd_config
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_rsa_key.pub
/etc/ssh/ssh_host_ecdsa_key
/etc/ssh/ssh_host_ecdsa_key.pub
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
/etc/system-release