工具猿之Linux运维命令总结以及场景运用

Linux运维命令汇总与使用

一、线上查询及帮助命令

命令 功能说明 何时使用(举例不全)
man 查看命令帮助,命令的词典,更复杂的还有info。但不常用。 当你需要查看某个命令的参数时只要man一下即可。
help 查看Linux内置命令的帮助,比如cd命令。 当非常紧急只是忘记该用哪个参数的时候,help 这种显示简单扼要的信息就特别实用,若是不太紧急的时候就可以用 man 这种详细描述的查询方式。

二、文件和目录操作命令

命令 功能说明 何时使用(举例不全)
ls 全拼list,功能是列出目录的内容及其内容属性信息。 当想要查看目录下的内容或内容属性时。
cd 全拼change directory,功能是从当前目录切换到指定的工作目录。 当想要切换其它目录时。
cp 全拼copy,功能是复制文件和目录。 当需要给出的文件或目录拷贝到另一文件或目录中时使用。
find 查找的意思,用于查找目录及目录下的文件。 find [指定查找目录] [查找规则] [查找完后执行的action]。
mv 全拼move,功能是移动或重命名文件。 想要移动或者重命名文件时。
pwd 全拼print working directory,功能是显示当前工作目录的绝对路径。 想要查看自己的当前所在目录时。
mkdir 全拼make directories,创建目录。 需要创建目录时,
rename 用于重命名文件。 想要用来重命名文件时。
rm 全拼remove,删除一个或多个文件目录。 需要删除文件时使用。
rmdir 全拼remove empty directories,功能删除空目录。 使用时,一个目录被删除之前必须是空的。该命令从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对父目录的写权限。
touch 创建新的文件夹,改变已有文件的时间戳属性。 想要创建文件时使用,若文件存在,会更改时间戳属性。
tree 以树形结构显示目录下的内容。 想要查看目录结构时。
basename 显示文件名或目录名。 想要获取末尾的文件名或路径名或者取消扩展名时。
dirname 显示文件或目录路径。 一般把它用在shell脚本中,用于取得脚本文件所在目录,然后将当前目录切换过去。取给定路径的目录部分。
chattr 改变文件得扩展属性。 有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了,在文件的隐藏属性里添加了 i 属性,然后chattr则是可以对这些隐藏属性进行修改的命令。也可添加属性保护目录或文件。
lsattr 查看文件得扩展属性。 当用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性。
file 显示文件的类型。 想要辨识该文件的类型时。
md5sum 计算和检验文件的MD5值。 在网络传输时,我们校验源文件获得其md5sum,传输完毕后,校验其目标文件,并对比如果源文件和目标文件md5 一致的话,则表示文件传输无异常。否则说明文件在传输过程中未正确传输。

三、查看文件及内容处理命令

命令 功能 何时使用(举例不全)
cat 全拼concatenate,用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。 当一次显示整个文件或者创建新文件或者几个文件合并为一个文件或者追加文件时。
tac tac是cat的反向拼写,因此命令的功能为反向显示文件内容。 想要倒着查看文件内容时。
more 分页显示文件内容。 对于内容比较多的,需要分页查看
less 分页显示文件内容,more命令的相反用法。 查看文件、ps查看进程信息并通过less分页显示、查看命令历史使用记录并通过less分页显示、浏览多个文件。
head 显示文件头部。 当有多个文件输入时,会先按顺序处理并输出,处理标准输入,可选参数-n,后加 - 符号,指定输出文件内容行数。
tail 显示文件的尾部。 与head用法相同,注意的是:-n后加 + 符号。
cut 将文件的每一行按指定分隔符分割并输出。 从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
split 分割文件为不同的小片段。 当数据量过大的时候会超出我们服务器的最大资源配置,导致有些软件或者我们自己写的脚本执行不过去,这时我们通常使用的办法就是将输入文件拆成很多份去依次执行。
paste 按行合并文件内容。 粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。paste将按行将不同文件行信息放在一行。
sort 对文件的文本内容排序。 1、读取制定的文件,如果未给定文件,则读取标准输入,在将排序好的数据写至标准输出。
2、需要对多行记录的组合而成的数据排序。如 地址清单。为了方便记录,地址记录经常会切断,以一个或数个空行将彼此隔开。像这种数据没有一定的排序键值位置可供-k 选项使用,所以我们得自救,提供一些额外标记(markup)给这些数据。
3、需要对多行记录的组合而成的数据排序。如 地址清单。为了方便记录,地址记录经常会切断,以一个或数个空行将彼此隔开。像这种数据没有一定的排序键值位置可供-k 选项使用,所以我们得自救,提供一些额外标记(markup)给这些数据。
uniq 去除重复行。 用于检查及删除文本文件中重复出现的行列。可检查文本文件中重复出现的行列。
wc 统计文件的行数、单词数或字节数。 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。
wc同时也给出所指定文件的总统计数。
iconv 转换文件得编码格式。 当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码不同而引起的,这时可以使用iconv进行编码转换,从而解决乱码问题。
dos2unix 将D0S格式文件转换成Unix格式。 Window系统中用/r/n来表示换行,linux中用/n来表示换行,Windows的文本文件,直接拿到linux 中使用可能会会出错,dos2unix工具就是将Windows文本文件中/n之前挨着的/r字符去掉。
vimdiff 命令行可视化文件比较工具,常用于文本文件。 当远程工作在Unix/Linux平台上的时候,恐怕最简单而且到处存在的就是命令行工具,比如diff。可惜diff的功能有限,使用起来也不是很方便。作为命令行的比较工具,希望能拥有简单明了的界面,可以对比较结果一目了然;希望能够在比较出来的多处差异之间快速定位,希望能够很容易的进行文件合并……。而Vim提供的diff模式,通常称作vimdiff。
rev 反向输出文件内容。 将文件中的每行内容以字符为单位反序输出,即第一个字符最后输出,最后一个字符最先输出,依次类推。
grep/egrep 过滤字符串。 它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
join 案件两个文件相同字段合并。 需要将两个文件内容合并时使用。
tr 替换或删除字符。 它可以用一个字符来替换另一个字符,或者可以完全除去一些字符。您也可以用它来除去重复字符。这就是所有 tr 所能够做的。
vi/vim 命令行文本编辑器。 编辑文本时,

四、信息显示命令

命令 功能 何时使用(举例不全)
uname 显示操作系统相关信息的命令。 想要查看关于系统信息命令时。
hostname 显示或设置当前系统的主机名。 想要查看或者修改主机名时,
dmesg 显示开机信息,用于诊断系统故障。 它提供了有关在引导期间加载的各种设备驱动程序的大量信息。通过此命令显示的信息可以帮助您了解Linux系统正在发生的事情,命令就是dmesg。dmesg有一些选项可以让你缩减这些信息。您可以将输出限制为仅错误和警告,这样您就不必筛选系统中正常运行的所有内容。
uptime 显示系统运行时间及负载。 想要查看系统的负载情况时。
stat 显示文件或文件系统的状态。 想要查看文件或者文件系统的运行状态时。
free 查看系统内存。 想要查看系统内存时。
date 显示与设置系统时间 想要查看或者设置系统时间时。
top 实时显示系统资源使用情况。 常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器,实时显示系统中各个进程的资源占用情况。系统出现卡顿,可查看系统资源使用情况。
du 计算磁盘空间使用情况。 想要查看磁盘空间使用情况时。
df 报告文件系统磁盘空间的使用情况。 当提示没有可用空间时,使用查看磁盘空间使用情况。
cal 查看日历等时间信息。 对系统日历的操作。

五、用户管理命令

命令 功能 何时使用(举例不全)
useradd 添加用户。 添加用户功能时使用
usermod 修改系统已存在的用户属性。 在添加了用户之后,如果不小心添加错了用户的信息,那么是否可以修改呢?当然可以了,我们可以直接使用编辑器修改用户相关文件,也可以使用 usermod 命令进行修改。
userdel 删除用户。 由于 userdel 会修改系统账户文件,那么我们需要root特权来运行它。不然我们会遇到一个报错信息“只有root权限才能执行这项操作”或者类似的信息。在我们得到特权后,我们可以通过输入 userdel 从你的控制台删除用户。
groupadd 添加用户组。 创建一个新的工作组,新工作组的信息将被添加到系统文件中。相关文件:
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/login.defs Shadow密码套件配置。
passwd 修改用户密码。 设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。
chage 修改用户密码有效期限。 chage -d (user)是密码最后一次的修改日期。
chage -E (user)是账户的失效时间。chage -m (number) (ueser)是用户密码最短修改时间在这个天数之内无法修改密码。
chage -M (number) (ueser)是设置密码最长使用时间,还有几天超过这个时间必须修改密码。
chage -W (number) (ueser)是设置密码过期前的提醒时间默认是7天。
chage -l (user)是查看用户密码状态的命令。
id 查看用户的uid、gid及归属的用户组。 当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。
id使我们更加容易地找出用户的UID以GID而不必在/etc/group文件中搜寻。
su 切换用户身份。 切换用户的时候使用
visudo 编辑/etc/sudoers文件专属命令。 配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因
一是它能够防止两个用户同时修改它;
二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。
sudo 以另外一个用户身份(默认root用户)执行事先在sudoers文件允许的命令。 sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

六、关于磁盘与文件系统的命令

命令 功能 何时使用(举例不全)
mount 挂载文件系统。 1、从光盘制作光盘镜像文件。将光盘放入光驱。
2、将文件和目录制作成光盘镜像文件。
3、光盘镜像文件的挂接(mount)。
4、挂接移动硬盘。
5、挂接U盘。
6、挂接Windows文件共享。
7、挂接UNIX系统NFS文件共享。
umount 卸载文件系统。 使用umount命令可以卸载文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。
如果设备正忙,卸载即告失败。卸载失败的常见原因是,某个打开的shell当前目录为挂载点里的某个目录,有时,导致设备忙的原因并不好找。碰到这种情况时,可以用lsof列出已打开文件,然后搜索列表查找待卸载的挂载点。
fsck 检查并修复Linux文件系统。 当您想要运行fsck时,有不同的场景:
1、系统无法启动。
2、系统上的文件已损坏(通常您可能会看到输入/输出错误)。
3、附加驱动器(包括闪存驱动器/ SD卡)无法正常工作。
mkfs 格式化创建Linux文件系统。 mkfs本身并不执行建立文件系统的工作,而是去调用相关的程序来执行。
例如,若在"-t" 参数中指定ext2,则mkfs会调用mke2fs来建立文件系统.使用时如省略指定【块数】参数,mkfs会自动设置 适当的块数。
fdisk 磁盘分区命令。适用于2TB以下的磁盘分区。 1、查看指定磁盘的分区
2、通过fdisk管理分区。
parted 磁盘分区命令,没有磁盘大小限制,常用于2TB以下磁盘分区。 1、选择分区硬盘。
2、创建分区。
3、完成分区操作。
4、验证分区信息。
5、删除分区示例。
partprobe 更新内核的硬盘分区表信息。 在安装系统之后,可否创建分区并且在不重新启动机器的情况下系统能够识别这些分区时。你可以使用fdisk或者其他命令创建一个新的分区,然后使用partprobe命令重新读取分区表。
mkswap 创建Linux交换分区。 mkswap命令用于在一个文件或者设备上建立交换分区。在建立完之后要使用sawpon命令开始使用这个交换区。最后一个选择性参数指定了交换区的大小,但是这个参数是为了向后兼容设置的,没有使用的必要,一般都将整个文件或者设备作为交换区。
swapon 启用交换分区。 在指定的设备上启用交换分区,使用的设备或文件由专用文件参数提供。它可以是”-L label”或”-U UUID”,以指示一个设备的标签或UUID。
对swapon的调用通常发生在系统引导脚本中,使所有交换设备都可用,因此分页和交换活动交叉在多个设备和文件之间。
swapoff 关闭交换分区。 有时运行大量的进程后swap大量占用,达到30%的话机器会变得很慢swapoff 的原理:将虚拟空间的数据写入到物理内存中,在使用swapoff时要保证物理内存的大小大于swap虚拟内存。
swapoff命令用于关闭指定的交换空间(包括交换文件和交换分区)。
sync 将内存缓冲区内的数据写入磁盘。 在linux系统中,为了加快数据的读取速度,默认情况下,某些数据将不会直接写入硬盘,而是先暂存内存中,如果一个数据被重复写,这样速度一定快,但存在一个问题,万一重新启动,或者是关机,或者是不正常断电的情况下,由于数据还没来得及存入硬盘,会造成数据更新不正常,这时需要命令sync进行数据的写入,即#sync,在内存中尚未更新的的数据会写入硬盘中。当然正常情况下,关闭系统时会自动进行内存数据于硬盘数据的同步检测,保证硬盘数据在关闭系统时是最新的。
1.在关机或者开机之前最好多执行这个几次,以确保数据写入硬盘。
2.挂载时,需要很长时间的操作动作(比如,cp 大文件,检测文件),在这个动作之后接sync。
3.卸载U盘或其他存储设备,需要很长时间,使用sync。
dd 转换或复制文件。 通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
1、备份。
2、恢复。
3、拷贝内存资料到硬盘。
4、从光盘拷贝iso镜像。
5、销毁磁盘数据。
6、得到最恰当的block size。
7、通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小。
8、测试硬盘读写速度。
9、修复硬盘。
dumpe2fs 导出ext2/ext3/ext4文件系统。 1、查看某个磁盘的所有信息。
2、查看某磁盘的inode数量。
3、查看某磁盘的block数量。
dump ext2/ext3/ext4/文件系统备份工具。 dump 命令使用“备份级别”来实现增量备份,它支持 0~9 共 10 个备份级别。其中,0 级别指的就是完全备份,1~9 级别都是增量备份级别。举个列子,当我们备份一份数据时,第一次备份应该使用 0 级别,会把所有数据完全备份一次;第二次备份就可以使用 1 级别了,它会和 0 级别进行比较,把 0 级别备份之后变化的数据进行备份;第三次备份使用 2 级别,2 级别会和 1 级别进行比较,把 1 级别备份之后变化的数据进行备份,以此类推。需要注意的是,只有在备份整个分区或整块硬盘时,才能支持 1~9 的增量备份级别;如果只是备份某个文件或不是分区的目录,则只能使用 0 级别进行完全备份。
e2fsck 检查ext2/ext3/ext4类型文件系统。 如突然断电后可能产生了磁盘坏道导致,所以使用e2fsck命令进行了磁盘修复。此命令可以检查及若有问题自动修复档案系统。
大部份使用 e2fsck 来检查硬盘 partition 的情况时,通常都是情形特殊,因此最好先将该 partition umount,然后再执行 e2fsck 来做检查,若是要非要检查 / 时,则请进入 singal user mode 再执行。
resize2fs 调整ext2/ext3/ext4文件系统大小。 如果我们创建一个loop设备然后将其挂载后,但是还要加大空间时,可以使用resize2fs命令来增大。
resize2fs程序不操作分区的大小。如果希望扩大文件系统,必须首先确保可以扩展基础分区的大小。
如果您使用逻辑卷管理器LVM(8),可以使用fdisk(8)删除分区并以更大的大小重新创建它,或者使用lvexport(8)。在重新创建分区时,请确保使用与以前相同的启动磁盘圆柱来创建分区!否则,调整大小操作肯定无法工作,您可能会丢失整个文件系统。运行fdisk(8)后,运行resize2fs来调整ext 2文件系统的大小,以使用新扩大的分区中的所有空间。
如果希望缩小ext2分区,请首先使用resize2fs缩小文件系统的大小。然后可以使用fdisk(8)缩小分区的大小。缩小分区大小时,请确保不使其小于ext2文件系统的新大小。

七、进程管理命令

命令 功能 何时使用(举例不全)
service 启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。 1、查看所有服务当前的运⾏状态。2、查看指定服务的运⾏状态。3、停⽌指定服务。
init 切换运行级别。 直接输入init + 你想要的模式 ,回车就行。
runlevel 查看系统当前运行级别。 使用runlevel命令可以输出以前和当前的运行级别。
runlevel读取系统UTMP文件,如果没有指定该文件时,默认使用/var/run/utmp文件,以找到最近的运行级别的记录。
pgrep 查找匹配条件的进程。 pgrep指令可以按名字或者其他属性搜索指定的进程,显示出进程的id到标准输出。
nice/renice 调整程序运行的优先级。 nice命令以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。
renice 可以给正在运行的进程设置调度优先级renice 可以给正在运行的进程设置调度优先级。降低一个运行进程的优先级。增加运行进程的优先级(减少 nice值)。
nohup 忽略挂起信号运行指定的命令。 如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。
该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。
pstree 树形显示进程。 1、以树状图显示进程同时还显示PID。
2、以树状图显示进程PID为的进程以及子孙进程,如果有-p参数则同时显示每个进程的PID。
ps 显示进程快照。 1. 显示所有进程信息。
2. 显示指定用户信息。
3. 显示所有进程信息,连带命令行。
4. ps 与grep 常用组合用法,查找特定进程。
5:将目前属于您自己这次登入的 PID 与相关信息列示出来。
6.列出目前所有的正在内存当中的程序。
7.以类似进程树的结构显示。
ps命令可以显示当前正在运行的那些进程的信息,但是对于它们之间的关系却显示得不够清晰。
crontab 定时任务命令。 可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。
kill 终止进程。 Kill命令通过进程ID(PID)给进程发信号。
1、强行中止(经常使用杀掉)一个进程。
2、在Linux中有时会发生这样一种情况:一个程序崩溃,并且处于死锁的状态。此时一般不用重新启动计算机,只需要中止(或者说是关闭)这个有问题的程序即可。
3、我们知道内存对于系统是非常重要的,回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序。
4、init进程是不可杀的。
killall 通过进程名终止进程。 该命令非常强大,它通过支持进程名而不是PID来结束进程。Killall命令也支持通配符。通配符如下,删除前缀有mysql的字符进程.使用进要小心,有可能结束的重要的系统进程。
pkill 通过进程名终止进程。 当作于管理进程时,pkill 命令和 killall 命令的用法相同。pkill 还有一个更重要的功能,即按照终端号来踢出用户登录。不管是使用 kill 命令按照 PID 杀死登录进程,还是使用 killall 命令按照进程名杀死登录进程,都是非常容易误杀死进程的,而使用 pkill 命令则不会。
bg 将一个在后台暂停的命令,变成继续执行(在后台执行) 将一个在后台暂停的命令,变成继续执行。
fg 将后台中的命令调至前台继续运行。 将后台中的命令调至前台继续运行。
jobs 查看当前有多少在后台运行的命令。 查看当前有多少在后台运行的命令。

八、网络操作命令

命令 功能 何时使用(举例不全)
telnet 使用telnet协议远程登录。 telnet用于远程登录到网络中的计算机,并以命令行的方式远程管理计算机。
需要注意的是,远程机器必须启动telnet服务器,否则无法打开telnet命令。
使用telnet的open子命令远程登录远程机器。
使用telnet的unset子命令关闭本地回显功能。
使用telnet的status子命令查看连接状态。
ssh 使用ssh加密协议远程登录 远程登录。
scp 全拼secure copy,用于不同主机之间复制文件。 复制文件,不同主机之间进行文件传输。
wget 命令行下载文件 1.下载整个http或者ftp站点。
2.断点续传,当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。
3.批量下载,如果有多个文件需要下载,那么可以生成一个文件,把每个文件的URL写一行。
4.选择性的下载,可以指定让wget只下载一类文件,或者不下载什么文件。
5.密码和认证。wget只能处理利用用户名/密码方式限制访问的网站。
6.利用代理服务器进行下载,如果用户的网络需要经过代理服务器,那么可以让wget通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc文件。
ping 测试主机之间网络的连通性。 它通常用来检测与目标主机的连通性,经常说"ping以下机器,看是否开着,不能打开网页时候,可以ping 一下网关,它是通过发送ICMP ECHO__REQUEST数据包到网络主机。并显示响应情况,这样我们就可以根据它输出的信息来确定目标主机是否可访问(但这不是绝对的)。
有些服务器为了防止通过ping探测到,通过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能通过ping确定该主机是否处于开启状态。
route 显示和设置Linux系统的路由表。 用于显示和操作IP路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是 为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为 Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。
ifconfig 查看、配置、启用或禁用网络接口的命令。 1:显示网络设备信息(激活状态的)。
2:启动关闭指定网卡。
3:为网卡配置和删除IPv6地址。
4:用ifconfig修改MAC地址。
ifup 启动网卡。 ifup指令用来启动网络接口设备。
ifdown 关闭网卡 ifdown指令用来关闭网络接口设备。ifup与ifdown一定要两者一起使用(ifdown eth0 && ifup eth0)。生产环境中,我们的服务器都是放在机房,没有在办公室;如果关闭了网卡,那就可能不能连接服务器了。
netstat 查看网络状态。 显示本机的网络连接、运行端口和路由表的信息。
1、显示当前系统路由信息。
2、显示当前TCP连接。
3、显示目前系统中已经启动的网络连接和对应的端口信息。
4、显示处于连接状态的资源信息。
ss 查看网络状态。 ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。
1、查看主机监听的端口。
2、通过 -r 选项解析 IP 和端口号。
3、使用 -p 选项查看监听端口的程序名称。
4、查看建立的 TCP 连接。
5、可以通过 dst/src/dport/sprot 语法来过滤连接的来源和目标,来源端口和目标端口。
6、ss 命令还可以通过 TCP 连接的状态进程过滤。
7、同时过滤 TCP 的状态和端口号。
nmap 网络扫描命令。 1、获取远程主机的系统类型及开放端口。
2、 列出开放了指定端口的主机列表。
3、在网络寻找所有在线主机。
4、Ping 指定范围内的 IP 地址。
5、 在某段子网上查找未占用的 IP。
6、 在局域网上扫找 Conficker 蠕虫病毒。
7、扫描网络上的恶意接入点 (rogue APs)。
8 、使用诱饵扫描方法来扫描主机端口。
9、为一个子网列出反向 DNS 记录。
10、 显示网络上共有多少台 Linux 及 Win 设备。
lsof 全拼list open files,也就是列举系统中已经被打开的文件。 1、查看指定端口有哪些进程在使用(lsof -i 列出所有的打开的网络连接)。
2、列出被某个进程打开所有的网络文件。
3、列出所有 tcp、udp 连接。
4、列出所有 NFS 文件。
5、查看文件、设备被哪些进程占用 。
6、指定目录、挂载点,可以看到有哪些进程打开了其下的文件指定目录、挂载点,可以看到有哪些进程打开了其下的文件。
7、列出某个目录(挂载点 如 /home 也行)下被打开的文件。
8、列出被指定进程名打开的文件。
9、指定进程号,可以查看该进程打开的文件。
10、查看指定用戶打开的文件(lsof -u ^www可以排除某用户)。
11、查看指定程序打开的文件。
mail 发送和接收邮件。 邮件发送、发送附件的、查看邮件等.
mutt 邮件管理命令。 mutt是linux下的一个email程序。Mutt 显然是一个 Unix 的邮件程序,它跟一般的 Windows 邮件程序不同,它不是一个包罗万象的大杂烩。你甚至会发现它根本不直接发出邮件,它从来不自己编辑邮件,它从来不自己对邮件进行加密和数字签名……Mutt 更像一个文件管理器,只不过它管理的是email。它的功能是借助各个最强大的程序来实现的。
nslookup 交互式查询互联网DNS服务器的命令。 nslookup是一个能够查询互联网域名服务器信息的程序。他有两种工作模式,即“交互模式”和“非交互模式”。在“交互模式”下,用户可以向域名服务器查询各类主机、域名的信息,或者输出域名中的主机列表。而在“非交互模式”下,用户可以针对一个主机或域名仅仅获取特定的名称或所需信息。
dig 查找DNS解析过程。 1、从指定的 DNS 服务器上查询,由于一些原因,希望从指定的 DNS 服务器上进行查询(从默认的 DNS 服务器上获得的结果可能不准确)。指定 DNS 服务器的方式为使用 @ 符号。
2、反向查询,可以使用 dig 的 -x 选项来反向解析 IP 地址对应的域名。
3、控制显示结果,dig 命令默认返回的结果展示详细的信息,如果要获得精简的结果可以使用 +short 选项。
4、查看 TTL(Time to Live)。TTL 是 DNS 解析中很重要的指标,主要是控制 DNS 记录在 DNS 服务器上的缓存时间5、跟踪整个查询过程,如果你好奇 dig 命令执行查询时都经历了哪些过程,你可以尝试使用 +trace 选项。
host 查询DNS的命令。 查出某个主机名的IP.1、是用resolv.conf中定义的DNS服务器查出百度主机的IP。
2、是用谷歌的DNS(8.8.8.8)来查百度主机的IP。
traceroute 追踪数据传输路由状况。 traceroute是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。
当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。
如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题。
tcpdump 命令行的抓包工具。 1、监听特定网卡。
2、监听特定主机。
3、特定来源、目标地址的通信。
4、特定端口。
5、监听TCP/UDP。
6、来源主机+端口+TCP。
7、监听特定主机之间的通信。
8、限制抓包的数量。
9、tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,才会将输出写到本地磁盘。也可以加上-U强制立即写到本地磁盘。

九、系统管理与性能监视命令

命令 功能 何时使用(举例不全)
chkconfig 管理Linux系统开机启动项。 1. 设置service启动信息。
2. 设置service运行级别。
3. 添加service。
4. 移除service。
5. 列出service的启动信息。
vmstat 虚拟内存统计。 如果你想动态的了解一下系统资源的使用状况,以及查看当前系统中到底是哪个环节最占用系统资源,就可以使用 vmstat 命令。
mpstat 显示各个可用的CPU的状态统计。 是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
mpstat最大的特点是:可以查看多核心cpu中每个计算核心的统计数据;
如查看多核CPU核心的当前运行状况信息。
如要看每个cpu核心的详细当前运行状况信息。
iostat 统计系统IO 通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况, 负载信息。如
1、显示所有设备负载情况。
2、定时显示所有信息。
3、显示指定磁盘信息。
4、显示tty和Cpu信息。
5、查看TPS和吞吐量信息。
6、查看设备使用率(%util)、响应时间(await)。
7、查看cpu状态。
sar 全面地获取系统的CPU、运行队列、磁盘、I/O、分页(交换区)、内存、CPU中断和网络等性能数据。 通过 sar 命令可以全面的获取系统的 CPU、运行队列、磁盘 I/O、交换区、内存、 cpu 中断、网络等性能数据。
1、sar监控 CPU。
2、sar内存和交换空间监控。
3、sar内存分页监控。
4、sar I/O 和传送速率监控。
5、sar进程队列长度和平均负载状态监控。
6、sar系统交换活动信息监控。
7、sar设备使用情况监控。
ipcs 用于报告Linux中进程间通信设施的状态,显示的信息包括消息队列表、共享内存和信号量的信息。 1、显示所有的IPC设施。
2、显示所有的消息队列Message Queue。
3、显示所有的信号量。
4、显示所有的共享内存。
5、显示IPC设施的详细信息。
6、显示IPC设施的限制大小。
7、显示IPC设施的权限关系。
8、显示IPC设施的最后操作时间。
9、显示IPC设施的当前状态。
ipcrm 用来删除一个或更多的消息队列、信号量集或共享内存标识。 ipcrm命令用于删除指定ID的IPC(Inter-Process Communication,进程间通信)对象,包括消息队列(message queue)、共享内存(shared memory)和信号量(semaphore),同时将与IPC对象关联的数据一并删除,只有超级用户或IPC对象创建者能够删除。
strace 用于诊断、调试Linux用户空间跟踪器。我们用它来监护用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。 strace有两种运行模式,一种是通过它启动要跟踪的进程。用法很简单,在原本的命令前加上strace即可。
比如我们要跟踪 “ls -lh /var/log/messages” 这个命令的执行,可以这样:strace ls -lh /var/log/messages。
另外一种运行模式,是跟踪已经在运行的进程,在不中断进程执行的情况下,理解它在干嘛。 这种情况,给strace传递个-p pid 选项即可。定位问题:
1、定位进程异常退出1、定位进程异常退出(如机器上有个叫做run.sh的常驻脚本,运行一分钟后会死掉。需要查出死因。)。
2、定位共享内存异常(如有个服务启动时报错,错误日志大概告诉我们是获取共享内存出错。)。
3、 性能分析(如假如有个需求,统计Linux 4.5.4 版本内核中的代码行数(包含汇编和C代码))。
ltrace 命令会跟踪进程的库函数调用,它会显示出哪个库函数被调用。 ltrace命令是用来跟踪进程调用库函数的情况。如
1、输出调用时间开销
2、显示系统调用时都可用。

十、内置命令与其他命令

命令 功能 何时使用(举例不全)
echo 打印变量,或直接输出指定字符串。 命令的输出内容如果没有特殊含义,则原内容输出到屏幕;如果输出内容有特殊含义,则输出打印其含义。
printf 将结果格式化输出到标准输出。 基本的打印输出(默认不换行\n换行)。进制的转换。
rpm 管理rpm包的命令。 可以安装、删除、升级和管理软件
当然也支持在线安装和升级软件
通过RPM包管理能知道软件包包含哪些文件,也能知道系统中的某个文件属于哪个软件包
可以在查询系统中的软件包是否安装以及其版本
作为开发者可以把自己的程序打包为RPM 包发布
软件包签名GPG和MD5的导入、验证和签名发布
依赖性的检查,查看是否有软件包由于不兼容而扰乱了系统。
watch 周期性的执行给定的命令,并将命令的输出以全屏方式显示。 可以帮你监测一个命令的运行结果,来监测你想要的一切命令的结果变化。
alias 设置系统别名。 alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号 ‘ ‘ 将原来的命令引起来,防止特殊字符导致错误。
alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件 /etc/bashrc中。
yum 自动化简单化地管理rpm包的命令。 它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。
unalias 取消系统别名。 命令用于删除别名。
date 查看或设置系统时间。 查看或者设置系统时间时。
clear 清除屏幕。 清楚屏幕命令行。
history 查看命令执行的历史记录。 查看历史命令执行记录。
eject 弹出光驱。 eject指令允许在软件控制下弹出可移动媒体(通常是光盘、软盘、磁带或Jaz或ZIP磁盘)。
该命令还可以控制一些由某些设备支持的自动弹出功能的多光盘转换器,并关闭一些光盘驱动器的盘。
time 计算命令执行时间。 time命令常用于测量一个命令的运行时间,注意不是用来显示和修改系统时间的(这是date命令干的事情)。
但是它也能做的不仅仅是测量运行时间,还可以测量内存、I/O等的使用情况。
nc 功能强大的网络工具。 1、端口扫描经常被系统管理员和黑客用来发现在一些机器上开放的端口,帮助他们识别系统中的漏洞。
2、假如你想和你的朋友聊聊,有很多的软件和信息服务可以供你使用。但是,如果你没有这么奢侈的配置,比如你在计算机实验室,所有的对外的连接都是被限制的,你怎样和整天坐在隔壁房间的朋友沟通那?不要郁闷了,netcat提供了这样一种方法,你只需要创建一个Chat服务器,一个预先确定好的端口,这样子他就可以联系到你了。
3、大部分时间中,我们都在试图通过网络或者其他工具传输文件。有很多种方法,比如FTP,SCP,SMB等等,但是当你只是需要临时或者一次传输文件,真的值得浪费时间来安装配置一个软件到你的机器上嘛。
4、假设,你想要传一个文件file.txt 从A 到B。A或者B都可以作为服务器或者客户端。
5、假设你的防火墙过滤除25端口外其它所有端口,你需要使用-p选项指定源端口。
6、如果你担心你在网络上发送数据的安全,你可以在发送你的数据之前用如mcrypt的工具加密。
xargs 将标准输入转换成命令行参数。 计算所有文件的行数。
打印指定文件的第一行。对每个文件执行一个自定义脚本。
exec 调用并执行指令的命令。 系统调用exec是以新的进程去代替原来的进程,但进程的PID保持不变。因此,可以这样认为,exec系统调用并没有创建新的进程,只是替换了原来进程上下文的内容,原进程的代码段,数据段,堆栈段被新的进程所代替。
如果你在一个shell里面,执行exec ls那么,当列出了当前目录后,这个shell就自己退出了,因为这个shell进程已被替换为仅仅执行ls命令的一个进程,执行结束自然也就退出了。为了避免这个影响我们的使用,一般将exec命令放到一个shell脚本里面,用主脚本调用这个脚本,调用点处可以用bash a.sh,(a.sh就是存放该命令的脚本),这样会为a.sh建立一个sub shell去执行,当执行到exec后,该子脚本进程就被替换成了相应的exec的命令。
export 设置或者显示环境变量。 设置或显示环境变量。
unset 删除变量或函数。 用于删除已定义的shell变量(包括环境变量)和shell函数。unset命令不能够删除具有只读属性的shell变量和环境变量。
type 用于判断另外一个命令是否为内置命令。 1.判断一个名字当前是否是alias、keyword、function、builtin、file或者什么都不是。
2.判断一个名字当前是否是alias、keyword、function、builtin、file或者什么都不是的另一种方法(适用于脚本编程)。
3.显示一个名字的所有可能。
4.查看一个命令的执行路径(如果它是外部命令的话)。
5.强制搜索外部命令。
bc 命令行科学计算器。 bc 命令是任意精度计算器语言,通常在linux下当计算器用。

十一、系统权限与用户相关命令

命令 功能 何时使用(举例不全)
chmod 改变文件按或目录权限。 如果用户想要更改文件“participants”的权限,以便所有人都可以完全访问该文件。
如果用户想成为唯一可以访问它的人。
用户想要为自己和其小组成员提供完全访问权限。
如果用户想为自己保留完全访问权限,但希望阻止其他人修改文件。
chown 改变文件或目录的属主和属组。 想要改变拥有者和群组。
想要改变文件拥有者和群组。
想要改变文件群组。
想要改变指定目录以及其子目录下的所有文件的拥有者和群组 。
chgrp 更改文件用户组 想要改变文件的群组属性。
想要根据指定文件改变文件的群组属性。
umask 显示或设置权限掩码。 默认情况下的umask值是022(可以用umask命令查看),此时你建立的文件默认权限是644(6-0,6-2,6-2),建立的目录的默认 权限是755(7-0,7-2,7-2),可以用ls -l验证一下, 现在应该知道umask的用途了吧,它是为了控制默认权限的。
whoami 显示当前有效的用户名称,相当于执行id -un命令。 由于系统管理员通常需要使用多种身份登录操作系统,例如通常以普通用户登录系统,然后在以su命令切换到root身份对系统进行管理,这时候就可以使用whoami来查看当前用户的身份。在linux系统上输入 whoami 命令。
who 显示当前登录系统的用户信息。 主要用于查看当前在线上的用户情况。
如果用户想和其它用户建立即时通信,比如使用talk命令,那么首先要确定的就是该用户确实在线上,不然 talk进程就无法建立起来。
又如,系统管理员希望监视每个登录的用户此时此刻的所作所为,也要使用who命令。
w 显示已经登录系统的用户列表,并显示用户正在执行的指令。 w命令可查询登录当前系统的用户信息,以及这些用户目前正在做什么操作。
last 显示登入系统的用户。 显示以前登录过的用户信息,last指令会搜索/var/log/wtmp文件(或者是经过-f选项指定的文件),然后列出文件中所有的用户信息。如果执行last指令时提示“last /var/log/wtmp∶ NO such file or directory”,则需要使用指令touch /var/log/wtmp手工创建此文件。
lastlog 显示系统中所有用户最近一次登录信息。 lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。
它根据UID排序显示登录名、端口号(tty)和上次登录时间。
如果一个用户从未登录过,lastlog显示Never logged。注意需要以root身份运行该命令。
users 显示当当前登陆系统的所有用户的用户列表。 用于显示当前登录系统的所有用户的用户列表。
每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。
finger 查找并显示用户信息。 finger命令的功能是查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。
如果要查询远程机上的用户信息,需要在用户名后面接“@主机名”,采用[用户名@主机名]的格式,不过要查询的网络主机需要运行finger守护进程。

十二、文件压缩与文件搜索命令

命令 功能 何时使用(举例不全)
tar 用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件。 经常需要进行文件的传输,所以需要对文件进行压缩。
unzip 用于解压缩zip文件。 unzip将列出、测试或从ZIP存档中提取文件,这些文件通常位于MS-DOS系统上。默认行为(就是没有选项)是从指定的ZIP存档中提取所有的文件到当前目录(及其下面的子目录)。
一个配套程序zip(1L)创建ZIP存档;这两个程序都与PKWARE的PKZIP和PKUNZIP为MS-DOS创建的存档文件兼容,但许多情况下,程序选项或默认行为是不同的。
gzip gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。 减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。
gzip命令对文本文件有60%~70%的压缩率。
zip zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。 zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用。
which 查找二进制命令,按环境变量PATH路径查找。 在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果。
也就是说使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置的命令。
如果你想知道你的命令放在那里了那么可以用which去查找一下。
find 从磁盘遍历查找文件或目录。 find [指定查找目录] [查找规则] [查找完后执行的action]。
locate 从数据库(/var/lib/molocat/mlocat.db)查找命令,使用updatedb更新库。 locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocate/mlocate.db 。这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

你可能感兴趣的:(linux,运维,服务器,centos)