一些基本命令供查询学习Linux使用
rm
$ rm
删除文件$ rmdir
删除文件夹$ rm -f
强行删除文件$ rm -r
递归删除文件夹里面的所有文件cp
$ cp -r dir path
移动dir整个目录到path路径下$ cat
$ nl
会显示行号df du
:磁盘占有情况$ df
$ df -lh
一般使用$ df -lh
显示以MB,KB为单位。
$ du file.txt
du
用于显示当前一个文件或者目录占用的磁盘空间(单位kb)
ps
:进程快照ps(process status
)命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程。为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的。
$ ps -f
$ ps -e
在其中firefox其他应用程序的进程
注意:在这里可以用$ kill 3366
来杀掉firefox进程。
也可以用正则表达式来寻找firefox的进程ID。
$ ps –e | grep firefox
$ ps –e | grep ‘firefox’
top
(或者free
):实时进程信息$ top
实时查看系统中所有进程信息,与统计结果。
$ top –p id
单独查看某个进程的具体信息。
前面5行统计信息区
下面几行
$ free
显示空闲的、已用的物理内存及swap内存,及被内核使用的buffer
再这里主要讨论-/+ buffer/cache
这一行是什么
Mem行:
total: total (physical) RAM, excluding a small bit that the kernel permanently reserves for itself at startup
used: memory in use by the OS
free: memory not in use.
total = used + free
buffers: buffers Buffer Cache
cache:cached Page Cache
-/+ buffers/cache 行
used(-buffers/cahce) = 第一行used – 第一行buffers – 第一行cached
free(+buffers/cache) =第一行free + 第一行buffers + 第一行cached
used-buffers/cache反映的是被程序实实在在吃掉的内存,而free+buffers/cache反映的是可以挪用的内存总数。
这就表明Linux内存会一直处于使用率高的状态,因为Linux把空闲内存拿去做缓存去了。等程序再次访问这些数据的时候,速度就会变快。而如果程序要使用内存,而系统内存不足的时候,Linux就会快速回收部分缓存给用户程序使用。
Cached is the size of the page cache. Buffers is the size of in-memory block I/O buffers.
Chche用于缓存文件数据,例如服务器的cache,buffer用于磁盘IO,解决低速设备高速设备的不均匀。
jobs
jobs
命令可以用来查看系统中正在运行的任务,包括后台运行的任务。该命令可以显示任务号及其对应的进程ID。一个任务可以对应于一个或者多个进程号。
fg
命令可以将后台任务调到前台
bg
命令是将前台暂停的任务调到后台继续运行。
$ fg jid
将jid的job任务调向前台运行
vmstat
:查看虚拟内存Virtual Meomory Statistics.
Active memory is memory that is being used by a particular process.
Inactive memory is memory that was allocated to a process that is no longer running.
When there is not enough free memory, OS allocates inactive memory for the new processes. For the First time, when we Start Apps OS allocate memory to them. When we close those apps the memory which was allocated to the apps would not be freed, instead marks it as inactive. Thereafter if you reopen the closed apps then OS marks inactive memory as active. This improves speed. In some cases like when you have 8GB of RAM, In that you have only 200MB of free memory and 3GB of inactive memory Then your system gets unresponsive, freeing unused and inactive memory would work in this case.
当我们打开APP时候,Linux会分配一块内存,并标记为active,当我们关闭这个APP时候,Linux并不会释放这个内存,而是把它标记为inactive,下次用的时候就不需要在去分配内存了,这样就可以加快速度。
uptime
:查看系统负荷Load average:表示1分钟、5分钟、15分钟内系统的平均负荷
当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1。
一般来说其CPU的核的数量决定了最大负荷,4核的CPU,工作量饱和的时候为4
(一般看15分钟的那个数据,因为1min具有瞬时性,不具有代表性)
netstat
:显示网络状态信息netstat的用法比较多,在这里列出一些比较常用的几个命令
$ netstat -at
:列出所有的TCP端口
$ netstat -an | grep ':22'
:找出在指定端口运行的进程
$ netstat -anp | grep ssh
$ netstat -anp | grep firefox
:查看某个进程的端口号
lsof
:列出当前系统打开文件lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。
(图稍微有点下)
$ lsof -i tcp:22
:列出端口22被那些进程占用
$ lsof -c mysql
:列出某个进程所打开的文件
who
w
whoami
w
-> 系统管理员若想知道某一时刻用户的行为(得到的结果比who更完整)
who
->系统管理员若想知道某一时刻登陆的用户
wc
:文件行数统计$ wc –l filename
统计行数
$ wc –c filename
统计字节数
source
:配置生效使得配置后的文件立即生效
$ source /etc/profile
使得配置的PATH环境变量立即生效在shell编程中,可以表示文件包含,即相当于import的意思
export
将变量导出为全局变量
下面为配置Java环境要修改的PATH文件
JAVA_HOME=/usr/share/jdk1.5.0_05
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/ dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH
注意linux用 :来分割目录
chmod
一般创建的文件没有x权限(执行权限),所以要添加执行权限
$ chmod –x ./myfile
find
, which
, type
,locate
, whereis
:查找文件$ find [dir] –name [“正则表达式”] –ls
$ find . -name '*.sh' -ls
:查找当前文件夹下所有.sh文件
$ find . -type d -name "*p"
:查找当前目录下,所有以p结尾的目录
$ find . -size +1000k -print
:查找当前目录中大于1000k的文件
which
:用于查找PATH路径下的某个命令是否存在.(cd 为bash内置命令,所以没有)
type
:判断一个命令是否为系统自带
locate
:其实是”find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
$ shutdown –r now
重启now
$ shutdown –h now
关机now
$ reboot
$ halt
$ init 0
关机
$ init 1
重启
iostat
:查看系统IO统计信息Report Central Processing Unit (CPU) statistics and input/output statistics for devices and partitions.
avg-cpu:(4 CPU)
如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU
disk:
1.tps: Indicate the number of transfers per second that were issued to the device. A transfer is an I/O request to the device. Multiple logical requests can be combined into a single I/O request to the device. A transfer is of indeterminate size. 该设备每秒的传输次数。“一次传输”意思是“一次I/O请求”。多个逻辑请求可能会被合并为“一次I/O请求”。“一次传输”请求的大小是未知的。
Nice值详解:
PRI/PR:即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高
NICE:表示进程可被执行的优先级的修正数值,Nice值的范围从-20到+19。
值为零则表示不会调整该进程的优先级。具有最高优先级的程序,其nice值最低,所以在LINUX系统中,值-20使得一项任务变得非常重要;与之相反,如果任务的nice为+19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己享有宝贵的CPU时间的更大使用份额,这也就是nice的名称的来意。
进程在创建时被赋予不同的优先级值,而如前面所说,nice的值是表示进程优先级值可被修正数据值,因此,每个进程都在其计划执行时被赋予一个nice值,这样系统就可以根据系统的资源以及具体进程的各类资源消耗情况,主动干预进程的优先级值。在通常情况下,子进程会继承父进程的nice值,比如在系统启动的过程中,init进程会被赋予0,其他所有进程继承了这个nice值(因为其他进程都是init的子进程)。
ping
traceroute
ping:通过发送ICMP报文来测试网络连通性
traceroute: 程序利用增加存活时间(TTL,Time to live)值来实现其功能的。每当数据包经过一个路由器,其存活时间就会减1。当其存活时间是0时,主机便取消数据包,并传送一个ICMP TTL数据包给原数据包的发出者。
程序发出的首3个数据包TTL值是1,之后3个是2,如此类推,它便得到一连串数据包路径。注意IP不保证每个数据包走的路径都一样。
Traceroute的原理是非常非常的有意思,它收到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。
有人要问,我怎么知道UDP到没到达目的主机呢?这就涉及一个技巧的问题,TCP和UDP协议有一个端口号定义,而普通的网络程序只监控少数的几个号码较 小的端口,比如说80,比如说23,等等。而traceroute发送的是端口号>30000(真变态)的UDP报,所以到达目的主机的时候,目的 主机只能发送一个端口不可达的ICMP数据报给主机。主机接到这个报告以后就知道,主机到了,所以,说Traceroute是一个骗子一点也不为过:)
防火墙封掉了ICMP的返回信息
记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,表示三个数据包返回后,网关响应时间。
watch
周期性的执行某个命令
$ watch –n 10 ‘uptime’
每10秒输出一次系统负载情况
at
与crond
at:在指定日期执行某一个操作(一次)
$ at –m 16:55 7/29/16
$ at> rm wqh
按住Ctrl+ D
在16年7月29日 16:55 删除wqh文件
crond周期性执行某个任务
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
file
用于探测某个文件的类型。
$ file –i filename
可以查看一个文件的MIME类型.
在Linux中,文件是没有后缀名的,其后缀名是为了帮助人去理解。那么计算机怎么去指导文件类型呢?
事实上,有一个东西叫做魔法数字(Magic Number,简称“魔数”)。它是某一类型的文件的头一个或几个字节的内容。计算机可以根据它的值判断文件的类型(即使文件的后缀名被错误地更改过)。