Linux基本命令-----------------------学习笔记

一些基本命令供查询学习Linux使用

rm

  • $ rm 删除文件
  • $ rmdir 删除文件夹
  • $ rm -f强行删除文件
  • $ rm -r递归删除文件夹里面的所有文件

cp

  • $ cp -r dir path 移动dir整个目录到path路径下

查看文件内容

  • $ cat
  • $ nl会显示行号

文件权限

文件权限

  • 第一行: 
    前三个:文件所有者的读、写和执行权限 
    中间三个:用户组的读、写和执行权限 
    后面三个:其他用户的读、写和执行权限
  • 第二行:1表示为文件;3表示目录,数字表示目录中文件个数。
  • 第三行:文件所有者
  • 第四行:文件所属用户组

df du:磁盘占有情况

$ df 
$ df -lh 
一般使用$ df -lh显示以MB,KB为单位。

df

$ du file.txt 
du用于显示当前一个文件或者目录占用的磁盘空间(单位kb) 
du

$ du -s:显示当前目录下文件大小的总和 
du-s

ps:进程快照

ps(process status)命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程。为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的。 
$ ps -f 
ps-f

  • UID 进程所属用户的ID,即哪个用户创建了该进程
  • PID 进程ID
  • PPID 父进程ID
  • C CPU使用率
  • STIME 进程被创建的时间
  • TTY 与进程有关的终端类型,该 process 是在那个终端机上面运作,若与终端机无关,则显示 ? (关于pts/ tty/ 暂时还不明白)
  • TIME 进程使用CPU的时间
  • CMD 创建该进程的命令

$ ps -e 
ps-e 
在其中firefox其他应用程序的进程 
注意:在这里可以用$ kill 3366来杀掉firefox进程。 
也可以用正则表达式来寻找firefox的进程ID。 
$ ps –e | grep firefox 
$ ps –e | grep ‘firefox’

top (或者free):实时进程信息

$ top 实时查看系统中所有进程信息,与统计结果。 
$ top –p id单独查看某个进程的具体信息。

top

前面5行统计信息区

  • 20:23:17 当前系统时间
  • up 1:13 表示系统运行了1h13m
  • users 2个用户(root wqh)
  • load average 0.02,0.12,0.13表示1分钟、5分钟、15分钟的负载情况
  • tasks 任务(进程)3个运行 1个zombie(僵尸进程)
  • CPU 状态 us 用户空间占有 ,sy内核空间占有 ,id空闲百分比,wa IO等待占有 hi 硬中端,si软中端(在这里CPU的使用比率和windows概念不同,需要理解Linux系统用户空间和内核空间的相关知识)
  • Mem 内存使用 Swap虚拟内存交换区

下面几行

  • VIRT 虚拟内存使用信息 kb
  • RES 进程使用,未被换出的物理内存大小 kb
  • S 进程状态 (R:Running, S:Stopped)

$ free 显示空闲的、已用的物理内存及swap内存,及被内核使用的buffer

free

再这里主要讨论-/+ 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,解决低速设备高速设备的不均匀。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

jobs

jobs 命令可以用来查看系统中正在运行的任务,包括后台运行的任务。该命令可以显示任务号及其对应的进程ID。一个任务可以对应于一个或者多个进程号。

fg 命令可以将后台任务调到前台 
bg 命令是将前台暂停的任务调到后台继续运行。 
$ fg jid将jid的job任务调向前台运行

vmstat:查看虚拟内存

Virtual Meomory Statistics.

vmstat

  • procs r(running)表示运行队列(也就是多少个进程分配到了CPU,并行运行进程数),这个值一般不能超过CPU内核的数目。 b(block)阻塞队列,表示阻塞的进程数量
  • memory swpd 虚拟内存的使用大小,如果大于0,表示你的机器物理内存不足了.free 空闲的物理内存大小 buff缓冲区(用于解决低速设备与高速设备的速度不一样) cache缓存区
  • swap si每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了 so so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了
  • io bi块设备每秒接收的块数量 bo 块设备每秒发送的块数量
  • system in 每秒CPU中断次数 cs每秒CPU中断次数

下面有个问题:active memory是什么东西? 
vmstat -a

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,下次用的时候就不需要在去分配内存了,这样就可以加快速度。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

uptime:查看系统负荷

uptime

Load average:表示1分钟、5分钟、15分钟内系统的平均负荷 
当CPU完全空闲的时候,平均负荷为0;当CPU工作量饱和的时候,平均负荷为1。 
一般来说其CPU的核的数量决定了最大负荷,4核的CPU,工作量饱和的时候为4 
(一般看15分钟的那个数据,因为1min具有瞬时性,不具有代表性)

netstat:显示网络状态信息

netstat的用法比较多,在这里列出一些比较常用的几个命令 
$ netstat -at:列出所有的TCP端口 
netstat -at

$ netstat -s:统计所有的端口信息 
netstat -s

$ netstat -r:显示核心路由表 
netstat -r

$ netstat -an | grep ':22':找出在指定端口运行的进程 
netstat -an | grep ':22'

$ netstat -anp | grep ssh 
$ netstat -anp | grep firefox:查看某个进程的端口号 
netstat -anp | grep ssh

lsof:列出当前系统打开文件

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。 
(图稍微有点下) 
$ lsof -i tcp:22:列出端口22被那些进程占用 
lsof -i tcp:22 
$ lsof -c mysql:列出某个进程所打开的文件 
lsof -c mysql

who w whoami

w -> 系统管理员若想知道某一时刻用户的行为(得到的结果比who更完整) 
who ->系统管理员若想知道某一时刻登陆的用户 
who_w_whoami

wc:文件行数统计

$ wc –l filename 统计行数 
$ wc –c filename 统计字节数 
wc

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

注意linux用 :来分割目录

chmod

一般创建的文件没有x权限(执行权限),所以要添加执行权限 
$ chmod –x ./myfile

findwhichtypelocatewhereis:查找文件

$ find [dir] –name [“正则表达式”] –ls

$ find . -name '*.sh' -ls:查找当前文件夹下所有.sh文件 
find

$ find . -type d -name "*p":查找当前目录下,所有以p结尾的目录 
find

$ find . -size +1000k -print:查找当前目录中大于1000k的文件 
find

which:用于查找PATH路径下的某个命令是否存在.(cd 为bash内置命令,所以没有) 
which

type:判断一个命令是否为系统自带 
type

locate:其实是”find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。 
locate

关机指令

$ 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. 
iostat 
avg-cpu:(4 CPU)


  • %user:CPU处在用户模式下的时间百分比。
  • %nice: CPU处在带NICE值的用户模式下的时间百分比。
  • %system: CPU处在系统模式下的时间百分比。
  • %iowait: CPU等待输入输出完成时间的百分比。
  • %idel: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请求”。“一次传输”请求的大小是未知的。
  • 1
  • 2
Nice值详解:
PRI/PR:即进程的优先级,或者通俗点说就是程序被CPU执行的先后顺序,此值越小进程的优先级别越高
NICE:表示进程可被执行的优先级的修正数值,Nice值的范围从-20到+19。
值为零则表示不会调整该进程的优先级。具有最高优先级的程序,其nice值最低,所以在LINUX系统中,值-20使得一项任务变得非常重要;与之相反,如果任务的nice为+19,则表示它是一个高尚的、无私的任务,允许所有其他任务比自己享有宝贵的CPU时间的更大使用份额,这也就是nice的名称的来意。
进程在创建时被赋予不同的优先级值,而如前面所说,nice的值是表示进程优先级值可被修正数据值,因此,每个进程都在其计划执行时被赋予一个nice值,这样系统就可以根据系统的资源以及具体进程的各类资源消耗情况,主动干预进程的优先级值。在通常情况下,子进程会继承父进程的nice值,比如在系统启动的过程中,init进程会被赋予0,其他所有进程继承了这个nice值(因为其他进程都是init的子进程)。
  • 1
  • 2
  • 3
  • 4
  • 5

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是一个骗子一点也不为过:)

traceroute 
防火墙封掉了ICMP的返回信息 
记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,表示三个数据包返回后,网关响应时间。

watch

周期性的执行某个命令 
$ watch –n 10 ‘uptime’ 
每10秒输出一次系统负载情况

atcrond

at:在指定日期执行某一个操作(一次) 
$ at –m 16:55 7/29/16 
$ at> rm wqh 
按住Ctrl+ D 
在16年7月29日 16:55 删除wqh文件 
at 
crond周期性执行某个任务 
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html

file

用于探测某个文件的类型。 
$ file –i filename 
可以查看一个文件的MIME类型.

在Linux中,文件是没有后缀名的,其后缀名是为了帮助人去理解。那么计算机怎么去指导文件类型呢?
事实上,有一个东西叫做魔法数字(Magic Number,简称“魔数”)。它是某一类型的文件的头一个或几个字节的内容。计算机可以根据它的值判断文件的类型(即使文件的后缀名被错误地更改过)。
  • 1

file

猜你喜欢

转载自blog.csdn.net/lai124793549/article/details/53435024