Linux常用的命令总结
什么是服务器
服务器是指网络环境下运行的软件,为网络上的用户提供信息和资源高性能计算机。
服务器特性
高速度的cpu运算能力
长时间的可靠运行能力
强大的I/O数据能力
通常有高性能,高效率,高可靠,高可用性,扩展性
LINUX的组成部分
内核,shell,应用程序和文件系统
查看用户终端
当前终端:tty 和 who am i或who -m 或
查看所有终端:who或w
查看当前运行级别
who -r 或 runleve
修改启动时默认运行级别:
修改/etc/inittab文件
Linux系统的目录结构
/bin :普通用户使用的命令
/sbin:管理员使用的命令
/boot:内核和系统引导程序核心文件
/dev:设备文件
/etc:配置文件
/home:宿主(普通用户)家目录
/root:管理员家目录
/lib:动态链接共享库
/mnt :挂载目录
/media:挂载usb接口移动硬盘
/proc:进程信息和内核信息
/opt:存放自定义的软件包(通过源码包安装的)
/run:临时文件
/srv:服务产生的文件
/sys:和/proc类似是一个虚拟的文件系统
/tmp:临时文件目录
/usr:存放应用程序 /var:存放日志文件
查看主机名
hostname
内核发行版
uname -r
查看CPU信息
/etc/proc/cpuinfo
lscpu
top
查看内存信息
free
/proc/meminfo
linux命令的分类
分内部和外部命令,用type来区分
查看当前的工作目录
pwd命令,查看当前的工作目录,而且是以绝对路径显示的
切换工作目录
cd命令
显示指定目录内容及目录中隐藏的文件
ls命令,
-a:显示所有文件,包括以“.”开头隐藏的文件
-l: 使用长列表格式显示
-d:只显示目录本身的属性,不显示目录中的内容,一般结合-l使用
-h:显示目录或文件大小,需要结合-l结合使用,将会显示KB、MB等单位
-R:以递归的方式显示指定目录及其子目录中的所有内容
-il:查看inode、链接数、符号链接引用
统计目录及文件的空间占用情况
du命令
-a:统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录
-h:显示出统计结果,使用-h选项后将显示出KB、MB等单位
-s:只统计每个参数所占用的空间总的大小。
创建新的目录
mkdir命令
-p 嵌套模式,连续创建空目录
创建空文件
touch命令
创建链接(link)文件
ln命令
-s :创建软连接
硬链接(hard link)与软链接(symbolic link)区别:
软链接:
1.软链接是以路径的形式存在(指向的是原文件的路径),类似于Windows中的快捷方式
2.软链接可以跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接
5.软连接的文件有自己的inode,跟原文件不一样
6.删除软链接并不影响被指向的原文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。
硬链接:
1.硬链接是以文件副本的形式存在,不占用实际空间
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建
4.硬链接的文件的inode跟原文件一样
5.由于硬链接是有着相同 inode 号,仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。
复制文件或目录
cp命令
-f:覆盖目标同名文件或目录时不进行提醒,而是直接强制复制
-i:覆盖目标同名文件或目录时提醒用户确认
-p:复制时保持源文件的权限,属主及时间标记等属性不变
-r:复制目录时必须使用此选项,表示递归复制所有文件及子目录
删除文件或目录
rm命令
-f:删除文件或目录时不进行提醒,而直接强制删除
-i:删除文件或目录时提醒用户确认
-r:删除目录时必须使用此选项,表示递归删除整个目录树(应谨慎使用)
移动文件或目录
mv命令,移动文件或目录,如果目标位置与源位置相同,则效果相当于为文件或目录改名
command not found可能原因
1.敲错了
2.命令没有安装
3.命令所在路径没在PATH变量的定义中
添加路径到PATH
1.临时修改PATH值
# PATH=$PATH:/tmp
永久修改PATH值 工作中一定会用的
/etc/profile //全局配置文件, 对所有用户生效
~username/.bash_profile //局部配置文件, 只对特定用户生效
命令的别名:
alias
1.临时
# alias vi='vim'
# vi /etc/passwd //执行vi时候, 实际上执行的是vim
2.永久, 改文件
/root/.bashrc
取消别名
unalias
查找文件和目录
vfind命令
find pathname -option [-print ] [ -exec | -ok command ] {} \;
find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为command { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同。
-name 查找名为filename的文件。
-iname 但忽略大小写
-type b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
s - socket文件
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-size [+/-]n
按照文件大小查询文件,+n表示文件大小大于n,-n表示文件大小小于n。常用单位:k, M, G
查看文件内容
cat命令
-n:文件中每一行都会显示行号。
nl命令,将指定的文件添加行号标注后写到标准输出。
-b a :表示不论是否为空行,也同样列出行号
-b t :如果有空行,空的那一行不要列出行号
分页查看文件内容
more和less命令
使用“more”命令查看超过一屏的文件内容时,将进行分屏显示,并在下面的左下角显示当前内容在这个文件中的百分比,在阅读时可以按Enter键向下滚动查看,按Space键可以向下翻一屏,按“q”键退出并返回原来的命令环境
less命令使用方法与more命令基本类似,但是比more更好的是,less命令可以结合管道符“|”分屏查看执行命令时输出的信息时,既可以向下翻页也可以向上翻页,而“more”命令只能向下翻页,不能向上翻页
查看文件开头或末尾的部分内容
head和tail命令
sort命令,它将文件进行排序,并将排序结果标准输出
-u : 唯一,排序并且排除重复项
-r : 反向排序
-n:按照数字进行排序
sort -t -k 参数
-t :指定分隔符,默认tab为分隔符
-k: 指定按照哪一个分割区域进行排序
uniq命令,用户去除文件中的重复行,一般与sort命令结合使用
-c或--count:在每列旁边显示该行重复出现的次数;
-i: 忽略大小写。
-d或--repeated:仅显示重复出现的行列;
-u或--unique:仅显示出一次的行列;
md5sum命令,计算和校验文件的md5值
diff命令,全拼difference,比较文件的差异,常用于文本文件。
统计和检索文件内容
wc命令,统计文件内容中的单词数量、行数等信息
-c:统计文件内容中的字节数
-l:统计文件内容中的行数
-w:统计文件内容中的单词个数
检索、过滤文件内容
grep命令
-i 忽略大小写
-v 取反
^ 以某关键字开头
$ 以某关键字结尾
^$ 空行
-l 一般和-r联用, 只显示包含关键字的文件的名字, 而不是显示文件内容
-r 递归检索
备份与恢复文档
压缩和解压缩工具
tar归档和释放命令 (-z(j)cvf)(-xvf)
-c:创建(create).tar格式的包文件
-C:解压时指定释放的目标文件夹
-f:表示使用归档文件
-j:调用bzip2程序进行压缩或解压
-p:打包时保留文件及目录的权限
-P:打包时保留文件及目录的绝对路径
-t:列表查看包内的文件
-v:输出详细信息
-x:解开.tar格式的包文件
-z:调用gzip程序进行压缩或解压
cut命令(剪切)
-f:显示指定字段的内容
-d:指定字段的分隔符,默认的字段分隔符为“TAB”
查询已安装的RPM软件信息
-qa:查看系统中已安装的所有RPM软件包列表
-qi:查看指定软件的详细信息
-ql:查询指定软件包所安装的目录、文件列表
-qc:仅显示指定软件包安装的配置文件
-qd:仅显示指定软件包安装的文档文件
-qf: 查询文件或目录属于哪个RPM软件
查询未安装的RPM包文件
-qpi:通过.rpm包文件查看该软件的详细信息
-qpl:查看.rpm安装包内所包含的目录、文件列表
-qpc:查看.rpm安装包内包含的配置文件列表
-qpd:查看.rpm安装包内包含的文档文件列表
安装或升级RPM软件,格式:rpm [选项] RPM包文件...
-i:安装一个新的rpm软件包
-U:升级某个rpm软件,若原本未装,则进行安装
-F:更新某个rpm软件,若原本未装,则放弃安装
-v:显示软件安装过程中的详细信息
-h:在安装或升级软件包的过程中,以“#”好显示安装进度
-e:卸载指定的RPM软件,格式:rpm -e 软件名
--force:强制安装所指定的rpm软件包
--nodeps:安装、升级或卸载软件时,忽略依赖关系
重建rpm 数据库:
# rpm --rebuilddb
--rebuilddb或--initdb重建RPM数据库。
yum安装软件包
-y :直接回答yes
list : 列出在yum server 上面有的RPM套件;若执行yum list installed则表示只列出系统中已安装的软件包,yum list available则表示只列出软件仓库中可用(尚未安装)的软件包,yum list update则表示列出可以升级版本的软件包。
update : 升级某个套件
info : 列出某个套件的详细信息
clean : 将已下载到本机的packages
remove : 移除已经安装在系统中的某个套件
yum update 全部更新
源码包安装
yum -y install gcc gcc-c++ apr apr-devel apr-util apr-util-devel pcre pcre-devel
UID
root用户的UID的固定值为0 。1~499的UID默认保留给程序用户使用,普通用户/组使用的UID号在500~60000之间
/etc/passwd: 用户信息
/etc/shadow: 用户密码相关的信息
useradd命令,添加用户账户
-u:指定 UID 标记号
-d:指定宿主目录,缺省为 /home/用户名
-e:指定帐号失效时间
-g:指定用户的基本组名(或UID号)
-G:指定用户的附加组名(或GID号)
-M:不为用户建立并初始化宿主目录
-s:指定用户的登录Shell
passwd命令,为用户账号设置密码
-d:清空用户的密码,使之无需密码即可登录
-l:锁定用户帐号
-S:查看用户帐号的状态(是否被锁定)
-u:解锁用户帐号
su命令,切换用户
只允许特定用户使用su命令
要做到这一点,编辑插入式验证模块为(PAM)配置文件/etc/pam.d/su 在文本编辑器中打开该文件,取消注释:
#auth required pam_wheel.so use_uid
将用户添加到名为wheel的特殊管理组
usermod -a -G wheel username
usermod命令,修改用户账户
-l:更改用户帐号的登录名称
-L:锁定用户账户
-U:解锁用户账户
userdel命令,删除用户账号
添加 -r 选项时:表示连用户的宿主目录一并删除
添加一个新的用户账号后,useradd命令会在用户的宿主目录中建立一些初始配置文件。这些文件来自于账号模板目录/etc/skel,基本上都是隐藏文件,
主要的用户初始配置文件
~/.bash_profile:用户每次登录时执行 局部配置文件 /etc/profile全局配置文件
~/.bashrc:每次进入新的Bash环境时执行(当然也包括登录系统)
~/.bash_logout:用户每次退出登录时执行
组账号文件
/etc/group:保存组帐号基本信息
/etc/gshadow:保存组帐号的密码信息
groupadd命令:添加组账号
-a:向组内添加一个用户
-d:从组内删除一个用户成员
-M:定义组成员列表,以逗号分隔
chown 属主:属组 文件或目录
-R:递归修改指定目录下所有文件、子目录的归属
规划硬盘中的分区
fdisk [磁盘设备]
m:查看操作指令的帮助信息
p:列表查看分区信息
n:新建分区
d:删除分区
t:变更分区类型
w:保存分区设置并退出
q:放弃分区设置并退出
创建文件系统
mkfs命令的使用
命令格式:mkfs -t 文件系统 分区设备名
例如:mkfs -t xfs /dev/sdb1 或mkfs.xfs /dev/sdb1
设置文件系统的自动挂载
/etc/fstab
blkid:显示uuid 和磁盘类型
df
-h: 以KB、MB、GB的单位来显示,可读性高(最常用)
-T: 显示文件系统类型
-i: 显示inode信息
执行如下的px aux命令后,将以简单列表的形式显示出进程信息
执行ps -elf命令,则将以长格式显示系统中的进程信息,并包含更丰富的内容,如ppid,表示对应进程的父进程信息。
a:显示当前终端下的所有进程信息,包括其他用户的进程。与x选项结合时将显示系统中所有的进程信息。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程信息。
-e:显示系统内的所有进程信息。
-l:使用长格式显示进程信息
-f:使用完整的格式显示进程信息
查看进程的动态信息
top 命令用于动态的监控进程活动与系统负载信息。在全屏的界面中
P键根据CPU占用情况对进程列表进行排序,
M键根据内存占用情况进行排序
N键根据启动时间进行排序
h键可以获得top程序的在线帮助
q键退出top程序
缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。
pgrep命令,查询进程信息
pgrep [选项] [程序名]
-l:输出对应的进程号
-U: 查询特定用户的进程
pstree命令,查看进程树
pstree -aup -aup:查看各进程对应的PID号,用户名,完成命令等信息
启动进程
手动启动进程:由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程
调度启动进程:通过at或cron计划任务调度
挂起当前进程:按ctrl+z
查看后台的进程:使用jobs命令,结合-l选项可以同时显示进程对应的pid号。
将后台的进程恢复运行: fg
终止进程执行
kill命令终止进程,kill后面只能跟进程号
pkill命令终止进程,根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程,
-U 指定用户
使用killall命令终止进程
at一次性任务设置
crontab周期性任务设置
如果没有启动crond服务
#systemctlstart crond
查看用户的计划任务列表
crontal -l
Linux启动流程及步骤如图所示:
Centos7之前init进程对应的pid号总是为1
Centos7之后系统中采用了全新的systemd启动方式
启动:systemctl start name.service
停止:systemctl stop name .service
重启:systemctl restart name.service
重载:systemctl reload name.service
状态:systemctl status name.service
查看某服务当前是否运行:systemctl is-active name.service
查看所有已经激活的服务:systemctl list-units --type service
开机自启动:systemctl enable name.service
日志文件
secure:安全相关,主要是用户认证,如登录 、创建和删除账号 、sudo等
messages:记录linux内核消息及各种应用程序的公共日志消息,包括启动、I/O错误、网络错误、程序故障等。对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获取相关的时间记录信息。
boot.log:系统启动日志。能看到启动流程。
cron:计划任务日志。会记录crontab计划任务的创建、执行信息。
dmesg:硬件设备信息(device)。纯文本,也可以用dmesg命令查看。
yum.log:yum软件的日志。记录yum安装、卸载软件的记录。
lastlog:用来记录用户最后登录事件的日志。用lastlog查看(二进制日志文件)
btmp:登录失败的信息(bad)。用lastb查(二进制日志文件)
wtmp:该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件,用last查(二进制日志文件)。
内核及系统日志功能主要由rsyslog软件包提供。
rpm -q rsyslog
/etc/logrotate.d/syslog //日志轮转(切割)相关文件
/etc/rsyslog.conf //rsyslogd的主配置文件
/etc/sysconfig/rsyslog //环境设置配置文件
httpd网站服务程序使用两个日志文件access_log和error_log分别记录客户访问事件和错误事件
查询当前登录的用户情况:
users、who、w命令
查询用户登录的历史记录:
last(用于查询成功登录到系统的用户记录)、
lastb(用于查询登录失败的用户记录,也可以直接从安全日志文件/var/log/secure中获得相关信息)
查看网络配置
使用ifconfig命令或ip addr show 或ip addr show dev 网络设备名或ip addr查看所有网卡信息。
使用hostname命令查看主机名
hostname
使用route命令查看路由表条目
route
route -n
-n以数字形式显示路由记录中的地址信息。
使用netstat命令查看网络连接情况
netstat
]-a:显示当前主机中所有连接的网络连接信息
-n:以数字的形式显示相关的主机地址、端口等信息
-r:显示Routing Table;
-t:显示TCP传输协议的连线状况;
-u:显示UDP传输协议的连线状况;
-l :仅列出有在 Listen (监听) 的服务状态
-p:显示与网络连接相关的进程号、进程名称信息
实例1:列出所有连接
#netstat -anp
实例2:列出所有tcp连接
# netstat -anpt
实例3:列出所有udp连接
# netstat -anpu
实例5:列出所有处于监听状态的连接
#netstat -anput
使用ss命令查看网络的连接情况
与netstat
ss执行的时候消耗资源以及消耗的时间都比netstat少很多