linux总结--命令详解
linux命令特点
规则
区分大小写
命令名特点
#最常见的缩写,取每个单词的首字母,如
cd=Change Directory
dd=Disk Dump
df=Disk Free
du=Disk Usage
pwd=Print Working Directory
ps=Processes Status
PS=Prompt Strings
su=Substitute User
rc=Run Command
Tcl=Tool Command Language
cups=Common Unix Printing System
apt=Advanced Packaging Tool
bg=BackGround
ping=Packet InterNet Grouper
#如果首字母后为“h”,通常保留
chsh=CHange SHell
chmod=CHange MODe
chown=CHange OWNer
chgrp=CHange GRouP
bash=Bourne Again SHell
zsh=Z SHell
ksh=Korn SHell
ssh=Secure SHell
#递归缩写[回文]也属于这一类,如:
GNU=GNU's Not Unix
PHP=PHP: Hypertext Preprocessor
RPM=RPM Package Manager
WINE=WINE Is Not an Emulator
PNG=PNG's Not GIF
nano=Nano's ANOther editor
#如果只有一个单词,通常取每个音节的首字母:
cp=CoPy
ln=LiNk
ls=LiSt
mv=MoVe
rm=ReMove
#对于目录,通常使用前几个字母作为缩写:
bin=BINaries
dev=DEVices
etc=ETCetera
lib=LIBrary
var=VARiable
proc=PROCesses
sbin=Superuser BINaries
tmp=TeMPorary
usr=Unix Shared Resources
#这种缩写的其它情况
diff=DIFFerences
cal=CALendar
cat=CATenate
ed=EDitor
exec=EXECute
tab=TABle
regexp=REGular EXPression
#如果某种缩写比较深入人心,例如“mesg”代表“message”,在新的复合缩写中,将沿用这种缩写方式
dmesg=Diagnostic MESsaGe
sed=Stream EDitor
stty=Set TTY
fstab=FileSystem TABle
passwd=PASSWorD
#有些缩写中,第一个字母“g”,代表“GNU”
awk=Aho Weiberger and Kernighan
gawk=GNU AWK
gpg=GNU Privacy Guard
grep=GNU Regular Expression Print
egrep=Extended GREP
命令分类
内部命令:
属于Shell解析器的一部分
cd 切换目录(change directory)
pwd 显示当前工作目录(print working directory)
help 帮助
外部命令:
独立于Shell解析器之外的文件程序
ls 显示文件和目录列表(list)
mkdir 创建目录(make directoriy)
cp 复制文件或目录(copy)
内部命令与外部命令的区别
内部命令实际上是shell程序的一部分,其中包含的是一些比较简练的linux系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。外部命令是linux系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以它们包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调进内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell 程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。
shell程序
Shell是一种具备特殊功能的程序, 它是介于使用者和 UNIX/linux 操作系统之核心程序(kernel)间的一个接口。
各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 command.com文件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的command.com 。
UNIX/linux将 shell 独立于核心程序之外, 使得它就如同一般的应用程序, 可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。
可以把shell看作是DOS下面的command.com(命令行解释器),而shell脚本就象是DOS的批处理文件(*.bat)。和DOS相比较,shell的功能要先进和丰富得多。
怎么区分内部外部命令
用man 命令试一下,如果不是会提示那些是内部命令,多用就知道了。
系统信息相关命令
ps
ps 用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。
-e /-A 显示所有进程,环境变量
-f 全格式
-a 显示所有用户的所有进程(包括其它用户)
-u 按用户名和启动时间的顺序来显示进程
-x 显示无控制终端的进程
ps -ef 全格式显示所有进程
ps -ef | more 分页显示所有进程全格式。
df
df 显示文件系统磁盘空间的使用情况
语法:df [选项] [文件名]
参数选项:
-a:--all,显示所有的文件系统,包括虚拟文件系统。
-B:--block-size,指定单位大小。比如1k,1m等。
-h:--human-readable,以易读的GB、MB、KB等格式显示。
-H:--si,和-h参数一样,但是不是以1024,而是1000,即1k=1000,而不是1k=1024。
-i:--inodes,不用硬盘容量,而是以inode的数量来显示。
-k:以KB的容量显示各文件系统,相当于--block-size=1k。
-m:以KB的容量显示各文件系统,相当于--block-size=1m。
-l:--local,只显示本地文件系统。
[root@localhost demo]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 3.7G 0 3.7G 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 3.7G 17M 3.7G 1% /run
[root@localhost demo]# df -h /home
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl_fedora-home 20G 174M 20G 1% /home
[root@localhost demo]# df -h /data
文件系统 容量 已用 可用 已用% 挂载点
/dev/sdb1 126G 49G 72G 41% /data
[root@localhost demo]# df -h /
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl_fedora-root 41G 19G 22G 46% /
filesystem:显示已挂载的文件系统的名称或设备
size:文件系统的总大小
used:已被文件系统使用的空间量
avail:文件系统中尚未被使用的可用空间
use%:文件系统已使用空间的百分比
mounted on:文件系统被挂载的目录或位置
挂载点:linux系统可以使用mount命令将一个文件系统附加到某个位置,该位置就成为文件系统的挂载点
被挂载的目录:一旦文件系统被挂载到挂载点上,就可以在挂载点下访问文件系统中的文件和目录
du
语法:du -sh [目录]
du 显示指定的文件(目录)已使用的磁盘空间的总大小
-h文件大小以K,M,G为单位显示(human-readable)
-s只显示各档案大小的总合(summarize)
# 查看当前目录下的总大小,单位自适应
[root@localhost local]# du -sh /root/demo/
18M /root/demo/
# 查看当前目录下的文件大小,单位自适应
[root@localhost local]# du -sh /root/demo/*
4.0K /root/demo/5429
68K /root/demo/com
44K /root/demo/fastjon-demo.log
18M /root/demo/fastjson-attack.jar
0 /root/demo/io
4.0K /root/demo/start-demo.sh
[root@localhost local]#
# 查看当前目录下的总大小,单位 M
[root@localhost local]# du -sm /root/demo/
18 /root/demo/
# 查看当前目录下的文件大小,单位 M
[root@localhost local]# du -sm /root/demo/*
1 /root/demo/5429
1 /root/demo/com
1 /root/demo/fastjon-demo.log
18 /root/demo/fastjson-attack.jar
0 /root/demo/io
1 /root/demo/start-demo.sh
[root@localhost local]#
也可以直接到一个文件
[root@localhost local]# du -h xgss.txt
4.0k xgss.txt
free
free 显示当前内存和交换空间的使用情况
top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
top 用来监控Linux的系统状况,比如cpu、内存的使用
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
- d:指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
- p:通过指定监控进程ID来仅仅监控某个进程的状态。
- q:该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
- S:指定累计模式。
- s:使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
- i:使top不显示任何闲置或者僵死进程。
- c:显示整个命令行而不只是显示命令名。
常用命令说明:
- Ctrl+L:擦除并且重写屏幕
- K:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号15。在安全模式中此命令被屏蔽。
- i:忽略闲置和僵死进程。这是一个开关式命令。
- q:退出程序
- r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
- S:切换到累计模式。
- s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
- f或者F:从当前显示中添加或者删除项目。
- o或者O:改变显示项目的顺序
- l:切换显示平均负载和启动时间信息。
- m:切换显示内存信息。
- t:切换显示进程和CPU状态信息。
- c:切换显示命令名称和完整命令行。
- M:根据驻留内存大小进行排序。
- P:根据CPU使用百分比大小进行排序。
- T:根据时间/累计时间进行排序。
- W:将当前设置写入~/.toprc文件中。
#top

第一行,任务队列信息,同 uptime 命令的执行结果
- 系统时间:13:32:27
- 运行时间:up 2day,21:22min,
- 当前登录用户: 2 user
- 负载均衡(uptime) load average: 1.27, 2.05, 2.38
average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
第二行,Tasks — 任务(进程)
- 总进程:291 total, 运行:2 running, 休眠:289 sleeping, 停止: 0 stopped, 僵尸进程: 0 zombie
第三行,cpu状态信息
- 9.9 us【user space】— 用户空间占用CPU的百分比。
- 6.0 sy【sysctl】— 内核空间占用CPU的百分比。
- 0.0 ni【】— 改变过优先级的进程占用CPU的百分比
- 82.6 id【idolt】— 空闲CPU百分比
- 0.5 wa【wait】— IO等待占用CPU的百分比
- 0.0 hi【Hardware IRQ】— 硬中断占用CPU的百分比
- 1.0 si【Software Interrupts】— 软中断占用CPU的百分比
第四行,内存状态
- 12137972k total 物理内存总量
- , 229296k used 使用的内存总量
- , 5973780k free 空闲的内存总量
- 5941496k buffers【缓存的内存量】
第五行,swap交换分区信息
- 0k total交换区总量
- 0k free,空闲交换区
- 0k used使用的交换区
- 505864k avail Mem 可用内存
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行: 空行
第七行
- PID — 进程id
- USER — 进程所有者
- PR — 进程优先级
- NI — nice值。负值表示高优先级,正值表示低优先级
- VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
- RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
- SHR — 共享内存大小,单位kb
- S —进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
- %CPU — 上次更新到现在的CPU时间占用百分比,如果一共有8个核,最大可到800%
- %MEM — 进程使用的物理内存百分比
- TIME+ — 进程使用的CPU时间总计,单位1/100秒
- COMMAND — 进程名称(命令名/命令行)
执行了top,按1可以查看每个cup的使用情况

jsp
jps (Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令
ls
用法:ls [选项]... [文件]...
没有指定目录显示当前目录下的内容
指定目录显示指定把目录下的内容
-a 显示所有文件及目录 (. 开头的隐藏文件也会列出)
-d 只列出目录(不递归列出目录内的文件)。
-l 以长格式显示文件和目录信息,包括权限、所有者、大小、创建时间等。
-r 倒序显示文件和目录。
-t 将按照修改时间排序,最新的文件在最前面。
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
-R 递归显示目录中的所有文件和子目录。
#不指定目录,显示当前目录下所有的文件/目录名字
# ls
bin dev lib xgss.txt
#指定目录,显示指定目录下所有的文件/目录名字
# ls xgss
xgss1 xgss1.txt
#-l显示目录下文件/目录的详细信息
# ls -l
-rw-r--r-- 1 user group 4096 Feb 21 12:00 xgss
-rw-r--r-- 1 user group 4096 Feb 21 12:00 xgss1.txt
#-l显示目录下文件/目录的详细信息,大小带上单位
# ls -lh
-rw-r--r-- 1 user group 4.0k Feb 21 12:00 xgss
-rw-r--r-- 1 user group 4.0k Feb 21 12:00 xgss1.txt
#-l显示目录下指定文件/目录的详细信息
# ls -l xgss.txt
-rw-r--r-- 1 user group 4096 Feb 21 12:00 xgss.txt
#ls *.xxx 显示后缀为xxx的文件
#ls *.txt
xgss.txt
#列出文件或者目录,其中目录会以/结尾
# ls -F
bin/ dev/ lib/ xgss.txt
-l详细说明

总用量 XX表示当前目录下总的文件大小(K),如果是英文环境则是total XX
1)表示文件的类型
- 普通文件
d 目录文件
p 管理文件
l 链接文件
b 块设备文件
c 字符设备文件
s 嵌套字文件
2)所有者/所有者权限
r 读权限
w 写权限
x 可执行权限
- 无权限
3)组用户权限(一个组中除所有者拥有的权限)
4)其他用户权限(除当前所有者的组,其他组可以进行访问的权限)
5)
a.如果是普通用户,这个数字指的是链接数
b.如果是目录文件,这个数字指的是它的第一级子目录数
6)用户名
7)组名
8)文件大小(字节)
9)最后修改时间
10)文件名
看安装的系统位数
uname -a
查看jdk安装路径
which java
lsof
命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)。找回/恢复删除的文件。是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
如:查看9096端口是否被占用
lsof -i:9096

查看linux版本
more /etc/issue
不同的linux显示是不同的

查看外网ip
curl members.3322.org/dyndns/getip
查看当前时间
date
查看文件的修改时间
查看awk.txt
stat awk.txt

whereis命令
用于查找文件
whereis [-bfmsu][-B ...][-M ...][-S ...][文件...]
| 参数 | 描述 |
|---|---|
| -b | 定位可执行文件。 |
| -m | 定位帮助文件。 |
| -s | 定位源代码文件。 |
| -u | 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。 |
| -B | 指定搜索可执行文件的路径。 |
| -M | 指定搜索帮助文件的路径。 |
| -S | 指定搜索源代码文件的路径。 |
查看指令”bash”的位置
whereis bash
输出:
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
说明: 以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径。
显示bash 命令的二进制程序的地址
whereis -b bash
输出:
bash: /bin/bash /etc/bash.bashrc
which命令
查看可执行文件的位置,which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的,搜索某个系统命令的位置,并且返回第一个搜索结果。
which [文件...]
参数:
-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息。
which lsmod
输出:
/bin/pwd
stat命令
用于显示文件的状态信息,stat命令的输出信息比ls命令的输出信息要更详细。
使用语法
用法:stat [OPTION]… FILE…
| 参数 | 参数说明 |
|---|---|
| -L | 支持符号连接; |
| -f | 显示文件系统状态而非文件状态; |
| -c | 按照指定格式输出; |
| -t | 以简洁方式输出信息; |
| --help | 显示指令的帮助信息; |
| --version | 显示指令的版本信息。 |
| 格式符 | 格式符说明 |
|---|---|
| %a | 八进制中的访问权限 |
| %A | 人类可读形式的访问权 |
| %b | 分配的块数(请参阅%B) |
| %B | %b报告的每个块的大小(字节) |
| %C | SELinux安全上下文字符串 |
| %d | 十进制设备编号 |
| %D | 十六进制的设备编号 |
| %f | 十六进制原始模式 |
| %F | 文件类型 |
[root@Gin scripts]#stat date.txt
File: `date.txt'
Size: 40 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 261790 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-01-29 10:49:25.119790781 +0800
Modify: 2017-01-29 10:49:11.961790098 +0800
Change: 2017-01-29 10:49:11.961790098 +0800
File:显示文件名
Size:显示文件大小,单位是bit ,1 Byte(B) = 8 bit
Blocks:文件使用的数据块总数,通常的 Linux 块大小为 512 字节
IO Block:IO块大小
regular file:文件类型(常规文件)
Device:设备编号
Inode:Inode号
Links:链接数
Access:文件的权限
Gid、Uid:文件所有权的Gid和Uid
access time:表示我们最后一次访问(仅仅是访问,没有改动)文件的时间
modify time:表示我们最后一次修改文件的时间
stat --help 获取命令帮助
stat --version 查看命令版本
stat test.sh 查看文件状态信息
stat -f test.sh -f查看文件所在文件系统状态信息
stat -t test.sh -t以简洁形式输出文件信息
stat -L test.sh -L显示软连接原始文件状态信息
stat -c %u test.sh 或者stat -c %U test.sh 获取文件所属用户或者用户ID
stat -c %G test.sh 或者stat -c %g test.sh 获取文件所属用户组或者用户组ID
stat -c %m test.sh 或者 stat -c %m /home/wuhs 获取文件磁盘挂载点
stat -c %x test.sh 获取文件访问时间
stat -c %y test.sh 获取文件修改时间
stat -c %z test.sh 获取文件更改时间
stat -c %A test.sh 或者stat -c %a test.sh 获取文件权限
系统操作相关命令
关机/重启命令
shutdown系统关机
-r 关机后立即重启
-h 关机后不重新启动
halt 关机后关闭电源
reboot 重新启动
systemctl
systemctl 动作 服务名.service
systemctl stop httpd.service 关闭服务
systemctl start httpd.service 开启服务
systemctl restart httpd.service 重启服务
systemctl status httpd.service 查看服务状态
等
systemctl和systemd
Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器
systemctl是 Systemd 的主命令,用于管理系统。
systemd全称:system daemon 字母d是守护进程(daemon)的缩写,就是它要守护整个系统。
Systemd是一个系统管理守护进程、工具和库的集合
Systemd的功能是用于集中管理和配置类UNIX系统。
显示系统状态:
$ systemctl status
立即激活单元:
# systemctl start [单元]
立即停止单元:
# systemctl stop [单元]
重启单元:
# systemctl restart [单元]
开机自动激活单元:
# systemctl enable [单元]
取消开机自动激活单元:
# systemctl disable [单元]
命令单元重新读取配置:
# systemctl reload [单元]
输出单元运行状态:
$ systemctl status [单元]
检查单元是否配置为自动启动:
$ systemctl is-enabled [单元]
显示单元的手册页:
# systemctl help [单元]
重新载入 systemd,扫描新的或有变动的单元:
# systemctl daemon-reload
输出激活的单元:
$ systemctl list-units
查看已激活的服务:
$ systemctl list-units -t service
输出运行失败的单元:
$ systemctl --failed
禁用一个单元:
# systemctl mask [单元]
取消禁用一个单元:
# systemctl unmask [单元]
查看所有已安装服务:
$ systemctl list-unit-files
检查某个服务的所有配置细节
# systemctl show [服务]
获取某个服务的依赖性列表
# systemctl list-dependencies [服务]
查看环境变量
$ systemctl show-environment
重启系统
# systemctl reboot
关闭系统
# systemctl poweroff
进入待机状态
# systemctl suspend
进入休眠状态
# systemctl hibernate
进入混合休眠模式
# systemctl hybrid-sleep
进入救援状态
# systemctl rescue
service
service 命令用于对系统服务进行管理。比如启动 (start) 、停止 (stop)、重启 (restart)、重新加载配置 (reload)、 查看状态 (status)等
service 命令是系统管理员命令,需要管理员权限才可以执行。service 命令本质上是一个 Shell 脚本,地址一般为 /sbin/service
可以通过cat /sbin/service来进行查看这个脚本
service < option > | --status-all | [ service_name [ command | --full-restart ] ]
service_name表示管理服务的脚本,存在 /etc/init.d/目录下;COMMAND 是传递给 SCRIPT 的参数
如果你的执行命令为service mysql stop start,那么就相当于执行了/etc/init.d/mysql stop start
将 MySQL 注册为系统服务,使用 service 命令管理。需要将 MySQL 的管理脚本 mysql.server 更名为 mysqld 放在 /etc/init.d/目录
service -h :查看命令帮助
service --status-all:显示所服务的状态
网络相关命令
netstat
netstat 显示网络状态信息
-a 显示所有连接和监听端口
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立相关链接的程序名
kill
设置为静态ip
vim /etc/sysconfig/network-scripts/ifcfg-etho
如修改为:
DEVICE="eth0"
BOOTPROTO=“static"
HWADDR="00:0C:29:62:4C:2B"
IPV6INIT="yes"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="1acc3359-b1fd-4ac8-b044-58b5fe5a16ce“
IPADDR="192.168.24.20"
NETMASK="255.255.255.0"
GATEWAY="192.168.24.1"
DNS1="8.8.8.8"
DNS2="8.8.4.4"

浙公网安备 33010602011771号