2.如何查看全部java进程html
ps -ef | grep java前端
ps -aux | grep javajava
如何杀掉某个服务的进程node
kill -9 [PID]mysql
这里pid须要用 ps -ef | grep 查询pidlinux
通常测试的项目里面,有个logs的目录文件,会存放日志文件,有个xxx.out的文件,能够用tail -f 动态实时查看后端日志nginx
先cd 到logs目录(里面有xx.out文件)程序员
tail -f xx.outweb
这时屏幕上会动态实时显示当前的日志,ctr+c中止面试
tail -1000 xx.out
netstat -anp | grep 端口号
图中主要看监控状态为LISTEN表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表示被占用了
查看82端口的使用状况,如图
netstat -anp |grep 82
能够看出并无LISTEN那一行,因此就表示没有被占用。此处注意,图中显示的LISTENING并不表示端口被占用,不要和LISTEN混淆哦,查看具体端口时候,必需要看到tcp,端口号,LISTEN那一行,才表示端口被占用了
查看当前全部已经使用的端口状况,如图:
netstat -nultp(此处不用加端口号)
find . -type f -size +100M
find / -name tnsnames.ora
查到:
/opt/app/oracle/product/10.2/network/admin/tnsnames.ora
/opt/app/oracle/product/10.2/network/admin/samples/tnsnames.ora
还能够用locate 来查找
locate tnsnames.ora
结果是:
/opt/app/oracle/product/10.2/hs/admin/tnsnames.ora.sample
/opt/app/oracle/product/10.2/network/admin/tnsnames.ora
/opt/app/oracle/product/10.2/network/admin/samples/tnsnames.ora
chmod
假设个人文件夹在主目录里,地址为 /var/home/dengchao/cc 。假设我要修改文件权限为777,则在终端输入 chmod 777 /var/home/userid/cc 文件夹的权限就变为了777。
若是是修改文件夹及子文件夹权限能够用 chmod -R 777 /var/home/userid/cc
具体的权限(例如777的含义等)在下面解释下:
777有3位,最高位7是设置文件全部者访问权限,第二位是设置群组访问权限,最低位是设置其余人访问权限。
其中每一位的权限用数字来表示。具体有这些权限:
r(Read,读取,权限值为4):对文件而言,具备读取文件内容的权限;对目录来讲,具备浏览目 录的权限。w(Write,写入,权限值为2):对文件而言,具备新增、修改文件内容的权限;对目录来讲,具备删除、移动目录内文件的权限。
x(eXecute,执行,权限值为1):对文件而言,具备执行文件的权限;对目录了来讲该用户具备进入目录的权限。
建立目录的命令: mkdir
建立文件的命令:典型的如 touch,vi 也能够建立文件,其实只要向一个不存在的文件输出,都会建立文件
复制文件的命令: cp
rm -rf 目录名字
-r 就是向下递归,无论有多少级目录,一并删除
-f 就是直接强行删除,不做任何提示的意思
一、删除文件夹实例:
rm -rf /var/logd/httpdr/access
将会删除/var/logd/httpdr/access目录以及其下全部文件、文件夹
二、删除文件使用实例:
rm -f /var/logd/httpdr/access.log
将会强制删除/var/logd/httpdr/access.log这个文件
Linux是一套无偿使用和自由传播的类Unix操做系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操做系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操做系统。
Linux和Unix都是功能强大的操做系统,都是应用普遍的服务器操做系统,有不少类似之处,甚至有一部分人错误地认为Unix和Linux操做系统是同样的,然而,事实并不是如此,如下是二者的区别。
LILO是Linux的引导加载程序。它主要用于将Linux操做系统加载到主内存中,以便它能够开始运行。
了解便可。
一、主机加电自检,加载 BIOS 硬件信息。
二、读取 MBR 的引导文件(GRUB、LILO)。
三、引导 Linux 内核。
四、运行第一个进程 init (进程号永远为 1 )。
五、进入相应的运行级别。
六、运行终端,输入用户名和密码。
Linux 系统的核心是内核。内核控制着计算机系统上的全部硬件和软件,在必要时分配硬件,并根据须要执行软件。
就像任何其余典型的操做系统同样,Linux拥有全部这些组件:内核,shell和GUI,系统实用程序和应用程序。Linux比其余操做系统更具优点的是每一个方面都附带其余功能,全部代码均可以避免费下载。
从大的方面讲,Linux 体系结构能够分为两块:
为何 Linux 体系结构要分为用户空间和内核空间的缘由?
用户空间和内核空间是程序执行的两种不一样的状态,咱们能够经过两种方式完成用户空间到内核空间的转移:1)系统调用;2)硬件中断。
BASH是Bourne Again SHell的缩写。它由Steve Bourne编写,做为原始Bourne Shell(由/ bin / sh表示)的替代品。它结合了原始版本的Bourne Shell的全部功能,以及其余功能,使其更容易使用。从那之后,它已被改编为运行Linux的大多数系统的默认shell。
BASH和DOS控制台之间的主要区别在于3个方面:
了解便可,不须要太深刻。
(1)、不可中断状态:进程处于睡眠状态,可是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。
(2)、暂停状态/跟踪状态:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED 状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操做。
(3)、就绪状态:在 run_queue 队列里的状态
(4)、运行状态:在 run_queue 队列里的状态
(5)、可中断睡眠状态:处于这个状态的进程由于等待某某事件的发生(好比等待 socket 链接、等待信号量),而被挂起
(6)、zombie 状态(僵尸):父亲没有经过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉
(7)、退出状态
守护进程是提供基本操做系统下可能没法使用的多种功能的服务。其主要任务是监听服务请求,同时对这些请求采起行动。服务完成后,它将断开链接并等待进一步的请求。
比较重要的是 /var/log/messages
日志文件。
该日志文件是许多进程日志文件的汇总,从该文件能够看出任何入侵企图或成功的入侵。
另外,若是胖友的系统里有 ELK 日志集中收集,它也会被收集进去。
一般,一个桌面环境,如KDE或Gnome,足以在没有问题的状况下运行。尽管系统容许从一个环境切换到另外一个环境,但这对用户来讲都是优先考虑的问题。有些程序在一个环境中工做而在另外一个环境中没法工做,所以它也能够被视为选择使用哪一个环境的一个因素。
root账户就像一个系统管理员账户,容许你彻底控制系统。你能够在此处建立和维护用户账户,为每一个账户分配不一样的权限。每次安装Linux时都是默认账户。
命令行界面(英语:command-line interface,缩写]:CLI)是在图形用户界面获得普及以前使用最为普遍的用户界面,它一般不支持鼠标,用户经过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。
一般认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操做。由于,命令行界面的软件一般须要用户记忆操做的命令,可是,因为其自己的特色,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面每每要较使用图形用户界面的操做速度要快。因此,图形用户界面的操做系统中,都保留着可选的命令行界面。
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操做用户界面。
图形用户界面是一种人与计算机通讯的界面显示格式,容许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些平常任务。与经过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优势。
开源容许你将软件(包括源代码)免费分发给任何感兴趣的人。而后,人们能够添加功能,甚至能够调试和更正源代码中的错误。它们甚至可让它运行得更好,而后再次自由地从新分配这些加强的源代码。这最终使社区中的每一个人受益。
这种所谓的自由软件运动具备多种优点,例如能够自由地运行程序以及根据你的须要自由学习和修改程序。它还容许你将软件副本从新分发给其余人,以及自由改进软件并将其发布给公众。
在 Linux 操做系统中,全部被操做系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看做是一个文件。
也就是说在 Linux 系统中有一个重要的概念:一切都是文件。其实这是 Unix 哲学的一个体现,而 Linux 是重写 Unix 而来,因此这个概念也就传承了下来。在 Unix 系统中,把一切资源都看做是文件,包括硬件设备。UNIX系统把每一个硬件都当作是一个文件,一般称为设备文件,这样用户就能够用读写文件的方式实现对硬件的访问。
Linux 支持 5 种文件类型,以下图所示:
这个问题,通常不会问。更可能是实际使用时,须要知道。
Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
常见目录说明:
通常来讲,面试不会问 inode 。可是 inode 是一个重要概念,是理解 Unix/Linux 文件系统和硬盘储存的基础。
理解inode,要从文件储存提及。
文件储存在硬盘上,硬盘的最小存储单位叫作"扇区"(Sector)。每一个扇区储存512字节(至关于0.5KB)。
操做系统读取硬盘的时候,不会一个个扇区地读取,这样效率过低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最多见的是4KB,即连续八个 sector组成一个 block。
文件数据都储存在"块"中,那么很显然,咱们还必须找到一个地方储存文件的元信息,好比文件的建立者、文件的建立日期、文件的大小等等。这种储存文件元信息的区域就叫作inode,中文译名为"索引节点"。
每个文件都有对应的inode,里面包含了与该文件有关的一些信息。
简述 Linux 文件系统经过 i 节点把文件的逻辑结构和物理结构转换的工做过程?
若是看的一脸懵逼,也不要紧。通常来讲,面试官不太会问这个题目。
Linux 经过 inode 节点表将文件的逻辑结构和物理结构进行转换。
1)硬连接
因为 Linux 下的文件是经过索引节点(inode)来识别文件,硬连接能够认为是一个指针,指向文件索引节点的指针,系统并不为它从新分配 inode 。每添加一个一个硬连接,文件的连接数就加 1 。
2)软连接
软连接克服了硬连接的不足,没有任何文件系统的限制,任何用户能够建立指向目录的符号连接。于是如今更为普遍使用,它具备更大的灵活性,甚至能够跨越不一样机器、不一样网络对文件进行连接。
实际场景下,基本是使用软连接。总结区别以下:
咱们能够把符号连接,也就是软链接,当作是 Windows系统里的快捷方式。
硬连接 就好像是 又复制了一份,举例说明:
ln 3.txt 4.txt 这是硬连接,至关于复制,不能够跨分区,但修改3,4会跟着变,若删除3,4不受任何影响。
ln -s 3.txt 4.txt 这是软链接,至关于快捷方式。修改4,3也会跟着变,若删除3,4就坏掉了,不能够用了。
RAID 全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID 一般被用在服务器电脑上,使用彻底相同的硬盘组成一个逻辑扇区,所以操做系统只会把它当作一个硬盘。
RAID 分为不一样的等级,各个不一样的等级均在数据可靠性及读写性能上作了不一样的权衡。在实际应用中,能够依据本身的实际需求选择不一样的 RAID 方案。
固然,由于不少公司都使用云服务,你们很难接触到 RAID 这个概念,更多的多是普通云盘、SSD 云盘酱紫的概念。
交换空间是Linux使用的必定空间,用于临时保存一些并发运行的程序。当RAM没有足够的内存来容纳正在执行的全部程序时,就会发生这种状况。
它包含本地安装的文件。此目录在文件存储在网络上的环境中很重要。具体来讲,本地安装的文件将转至/ usr / local / bin,/ usr / local / lib等。此目录的另外一个应用是它用于从源安装的软件包,或未正式随分发一块儿提供的软件。
一、添加普通用户登录,禁止 root 用户登录,更改 SSH 端口号。
修改 SSH 端口不必定绝对哈。固然,若是要暴露在外网,建议改下。l
二、服务器使用密钥登录,禁止密码登录。
三、开启防火墙,关闭 SElinux ,根据业务需求设置相应的防火墙规则。
四、装 fail2ban 这种防止 SSH 暴力破击的软件。
五、设置只容许公司办公网出口 IP 能登录服务器(看公司实际须要)
也能够安装 VPN 等软件,只容许链接 VPN 到服务器上。
六、修改历史命令记录的条数为 10 条。
七、只容许有须要的服务器能够访问外网,其它所有禁止。
八、作好软件层面的防御。
CC 攻击,主要是用来攻击页面的,模拟多个用户不停的对你的页面进行访问,从而使你的系统资源消耗殆尽。
DDOS 攻击,中文名叫分布式拒绝服务攻击,指借助服务器技术将多个计算机联合起来做为攻击平台,来对一个或多个目标发动 DDOS 攻击。
攻击,便是经过大量合法的请求占用大量网络资源,以达到瘫痪网络的目的。
怎么预防 CC 攻击和 DDOS 攻击?
防 CC、DDOS 攻击,这些只能是用硬件防火墙作流量清洗,将攻击流量引入黑洞。
流量清洗这一块,主要是买 ISP 服务商的防攻击的服务就能够,机房通常有空余流量,咱们通常是买服务,毕竟攻击不会是持续长时间。
如何过滤与预防?
数据库网页端注入这种,能够考虑使用 nginx_waf 作过滤与预防。
Linux下有3种权限:
本小节为选读。我也不太会写 Shell 脚本,都是写的时候,在网络上拼拼凑凑。。。
一个 Shell 脚本是一个文本文件,包含一个或多个命令。做为系统管理员,咱们常常须要使用多个命令来完成一项任务,咱们能够添加这些全部命令在一个文本文件(Shell 脚本)来完成这些平常工做任务。
什么是默认登陆 Shell ?
在 Linux 操做系统,"/bin/bash"
是默认登陆 Shell,是在建立用户时分配的。
使用 chsh 命令能够改变默认的 Shell 。示例以下所示:
## chsh <用户名> -s <新shell> ## chsh ThinkWon -s /bin/sh
在 Shell 脚本中,如何写入注释?
注释能够用来描述一个脚本能够作什么和它是如何工做的。每一行注释以 #
开头。例子以下:
#!/bin/bash ## This is a command echo “I am logged in as $USER”
什么是BASH?
BASH是Bourne Again SHell的缩写。它由Steve Bourne编写,做为原始Bourne Shell(由/ bin / sh表示)的替代品。它结合了原始版本的Bourne Shell的全部功能,以及其余功能,使其更容易使用。从那之后,它已被改编为运行Linux的大多数系统的默认shell。
在 Shell 脚本,咱们能够使用两种类型的变量:
系统定义变量
系统变量是由系统系统本身建立的。这些变量一般由大写字母组成,能够经过
set
命令查看。
用户定义变量
用户变量由系统用户来生成和定义,变量的值能够经过命令
"echo $<变量名>"
查看。
Shell脚本中 $? 标记的用途是什么?
在写一个 Shell 脚本时,若是你想要检查前一命令是否执行成功,在 if
条件中使用 $?
能够来检查前一命令的结束状态。
若是结束状态是 0 ,说明前一个命令执行成功。例如:
root@localhost:~## ls /usr/bin/shar /usr/bin/shar root@localhost:~## echo $? 0
若是结束状态不是0,说明命令执行失败。例如:
root@localhost:~## ls /usr/bin/share ls: cannot access /usr/bin/share: No such file or directory root@localhost:~## echo $? 2
Bourne Shell(bash) 中有哪些特殊的变量?
下面的表列出了 Bourne Shell 为命令行设置的特殊变量。
内建变量 解释 $0 命令行中的脚本名字 $1 第一个命令行参数 $2 第二个命令行参数 ….. ……. $9 第九个命令行参数 $## 命令行参数的数量 $* 全部命令行参数,以空格隔开
如何取消变量或取消变量赋值?
unset
命令用于取消变量或取消变量赋值。语法以下所示:
## unset <变量名>
if
语法如何嵌套?if [ 条件 ] then 命令1 命令2 ….. else if [ 条件 ] then 命令1 命令2 …. else 命令1 命令2 ….. fi fi
在 Shell 脚本中如何比较两个数字?
在 if-then
中使用测试命令( -gt
等)来比较两个数字。例如:
#!/bin/bash x=10 y=20 if [ $x -gt $y ] then echo “x is greater than y” else echo “y is greater than x” fi
case
语句的语法?基础语法以下:
case 变量 in 值1) 命令1 命令2 ….. 最后命令 !! 值2) 命令1 命令2 …… 最后命令 ;; esac
for
循环语法?基础语法以下:
for 变量 in 循环列表 do 命令1 命令2 …. 最后命令 done
while
循环语法?如同 for
循环,while
循环只要条件成立就重复它的命令块。
不一样于 for
循环,while
循环会不断迭代,直到它的条件不为真。
基础语法:
while [ 条件 ] do 命令… done
do-while 语句的基本格式?
do-while
语句相似于 while
语句,但检查条件语句以前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用 do-while
语句的语法:
do { 命令 } while (条件)
Shell 脚本中 break 命令的做用?
break
命令一个简单的用途是退出执行中的循环。咱们能够在 while
和 until
循环中使用 break
命令跳出循环。
Shell 脚本中 continue 命令的做用?
continue
命令不一样于 break
命令,它只跳出当前循环的迭代,而不是整个循环。continue
命令不少时候是颇有用的,例如错误发生,但咱们依然但愿继续执行大循环的时候。
使用 chmod 命令来使脚本可执行。例子以下:chmod a+x myscript.sh
。
#!/bin/bash 的做用?
#!/bin/bash
是 Shell 脚本的第一行,称为释伴(shebang)行。
#
符号叫作 hash ,而 !
叫作 bang。/bin/bash
来执行。如何调试 Shell脚本?
-x'
数(sh -x myscript.sh
)能够调试 Shell脚本。-nv
参数(sh -nv myscript.sh
)。如何将标准输出和错误输出同时重定向到同一位置?
2>&1 (如## ls /usr/share/doc > out.txt 2>&1 )
。&> (如## ls /usr/share/doc &> out.txt )
。在 Shell 脚本中,如何测试文件?
test 命令能够用来测试文件。基础用法以下表格:
Test 用法 -d 文件名 若是文件存在而且是目录,返回true -e 文件名 若是文件存在,返回true -f 文件名 若是文件存在而且是普通文件,返回true -r 文件名 若是文件存在并可读,返回true -s 文件名 若是文件存在而且不为空,返回true -w 文件名 若是文件存在并可写,返回true -x 文件名 若是文件存在并可执行,返回true
函数是拥有名字的代码块。当咱们定义代码块,咱们就能够在咱们的脚本调用函数名字,该块就会被执行。示例以下所示:
$ diskusage () { df -h ; } 译注:下面是我给的shell函数语法,原文没有 [ function ] 函数名 [()] { 命令; [return int;] }
如何让 Shell 就脚本获得来自终端的输入?
read 命令能够读取来自终端(使用键盘)的数据。read 命令获得用户的输入并置于你给出的变量中。例子以下:
## vi /tmp/test.sh #!/bin/bash echo ‘Please enter your name’ read name echo “My Name is $name” ## ./test.sh Please enter your name ThinkWon My Name is ThinkWon
如何执行算术运算?
有两种方法来执行算术运算:
## expr 5 + 2
。$[ 表达式 ]
):test=$[16 + 4] ; test=$[16 + 4]
。/dev
目录下?#!/bin/bash read -p "Input file name: " FILENAME if [ -c "$FILENAME" ];then cp $FILENAME /dev fi
#!/bin/bash groupadd class1 for((i=1;i<31;i++)) do if [ $i -le 10 ];then useradd -g class1 std0$i else useradd -g class1 std$i fi done
编写 Shell 程序,实现自动删除 50 个帐号的功能,帐号名为stud1 至 stud50 ?
#!/bin/bash for((i=1;i<51;i++)) do userdel -r stud$i done
/tmp/input.txt
文件的内容?要求:
[root@~]## cat -n /tmp/input.txt 1 000011111222 2 3 000011111222222 4 11111000000222 5 6 7 111111111111122222222222 8 2211111111 9 112222222 10 1122 11 ## 删除全部空行命令 [root@~]## sed '/^$/d' /tmp/input.txt 000011111222 000011111222222 11111000000222 111111111111122222222222 2211111111 112222222 1122 ## 插入指定的字符 [root@~]## sed 's#\(11111\)#AAA\1BBB#g' /tmp/input.txt 0000AAA11111BBB222 0000AAA11111BBB222222 AAA11111BBB000000222 AAA11111BBBAAA11111BBB11122222222222 22AAA11111BBB111 112222222 1122
通常来说,桌面用户首选 Ubuntu ;服务器首选 RHEL 或 CentOS ,二者中首选 CentOS 。
根据具体要求:
安全性要求较高,则选择 Debian 或者 FreeBSD 。
须要使用数据库高级服务和电子邮件网络应用的用户能够选择 SUSE 。
想要新技术新功能能够选择 Feddora ,Feddora 是 RHEL 和 CentOS 的一个测试版和预发布版本。
【重点】根据现有情况,绝大多数互联网公司选择 CentOS 。如今比较经常使用的是 6 系列,如今市场占有大概一半左右。另外的缘由是 CentOS 更侧重服务器领域,而且无版权约束。
CentOS 7 系列,也慢慢使用的会比较多了。
一、肯定机器是作什么用的,好比是作 WEB 、DB、仍是游戏服务器。
不一样的用途,机器的配置会有所不一样。
二、肯定好以后,就要定系统须要怎么安装,默认安装哪些系统、分区怎么作。
三、须要优化系统的哪些参数,须要建立哪些用户等等的。
有哪些方面的因素会致使网站网站访问慢?
一、服务器出口带宽不够用
- 自己服务器购买的出口带宽比较小。一旦并发量大的话,就会形成分给每一个用户的出口带宽就小,访问速度天然就会慢。
- 跨运营商网络致使带宽缩减。例如,公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能致使带宽的缩减。
二、服务器负载过大,致使响应不过来
能够从两个方面入手分析:
- 分析系统负载,使用 w 命令或者 uptime 命令查看系统负载。若是负载很高,则使用 top 命令查看 CPU ,MEM 等占用状况,要么是 CPU 繁忙,要么是内存不够。
- 若是这两者都正常,再去使用 sar 命令分析网卡流量,分析是否是遭到了攻击。一旦分析出问题的缘由,采起对应的措施解决,如决定要不要杀死一些进程,或者禁止一些访问等。
三、数据库瓶颈
- 若是慢查询比较多。那么就要开发人员或 DBA 协助进行 SQL 语句的优化。
- 若是数据库响应慢,考虑能够加一个数据库缓存,如 Redis 等。而后,也能够搭建 MySQL 主从,一台 MySQL 服务器负责写,其余几台从数据库负责读。
四、网站开发代码没有优化好
- 例如 SQL 语句没有优化,致使数据库读写至关耗时。
针对网站访问慢,怎么去排查?
一、首先要肯定是用户端仍是服务端的问题。当接到用户反馈访问慢,那边本身当即访问网站看看,若是本身这边访问快,基本判定是用户端问题,就须要耐心跟客户解释,协助客户解决问题。
不要上来就看服务端的问题。必定要从源头开始,逐步逐步往下。
二、若是访问也慢,那么能够利用浏览器的调试功能,看看加载那一项数据消耗时间过多,是图片加载慢,仍是某些数据加载慢。
三、针对服务器负载状况。查看服务器硬件(网络、CPU、内存)的消耗状况。若是是购买的云主机,好比阿里云,能够登陆阿里云平台提供各方面的监控,好比 CPU、内存、带宽的使用状况。
四、若是发现硬件资源消耗都不高,那么就须要经过查日志,好比看看 MySQL慢查询的日志,看看是否是某条 SQL 语句查询慢,致使网站访问慢。
怎么去解决?
cat 命令用于链接文件并打印到标准输出设备上。
cat 主要有三大功能:
1.一次显示整个文件:
cat filename
2.从键盘建立一个文件:
cat > filename
只能建立新文件,不能编辑已有文件。
3.将几个文件合并为一个文件:
cat file1 file2 > file
实例:
(1)把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里
cat -n log2012.log log2013.log
(2)把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)以后将内容附加到 log.log 里
cat -b log2012.log log2013.log log.log
(3)使用 here doc 生成新文件
cat >log.txt <<EOF >Hello >World >PWD=$(pwd) >EOF ls -l log.txt cat log.txt Hello World PWD=/opt/soft/test
(4)反向列示
tac log.txt PWD=/opt/soft/test World Hello
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其余。利用 chmod 能够控制文件如何被他人所调用。
用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操做符表达式的文字设定法;另外一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其余用户的读、写和执行权限。可以使用 ls -l test.txt 查找。
以文件 log2012.log 为例:
-rw-r--r-- 1 root root 296K 11-13 06:03 log2012.log
第一列共有 10 个位置,第一个字符指定了文件类型。在一般意义上,一个目录也是一个文件。若是第一个字符是横线,表示是一个非目录的文件。若是是 d,表示是一个目录。从第二个字符开始到第十个 9 个字符,3 个字符一组,分别表示了 3 组用户对文件或者目录的权限。权限字符用横线表明空许可,r 表明只读,w 表明写,x 表明可执行。
经常使用参数:
-c 当发生改变时,报告处理信息 -R 处理指定目录以及其子目录下全部文件
权限范围:
u :目录或者文件的当前的用户 g :目录或者文件的当前的群组 o :除了目录或者文件的当前用户或群组以外的用户或者群组 a :全部的用户及群组
权限代号:
r :读权限,用数字4表示 w :写权限,用数字2表示 x :执行权限,用数字1表示 - :删除权限,用数字0表示 s :特殊权限
实例:
(1)增长文件 t.log 全部用户可执行权限
chmod a+x t.log
(2)撤销原来全部的权限,而后使拥有者具备可读权限,并输出处理信息
chmod u=r t.log -c
(3)给 file 的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其余用户分配执行(1)的权限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
(4)将 test 目录及其子目录全部文件添加可读权限
chmod u+r,g+r,o+r -R text/ -c
chown 将指定文件的拥有者改成指定的用户或组,用户能够是用户名或者用户 ID;组能够是组名或者组 ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
-c 显示更改的部分的信息 -R 处理指定目录及子目录
实例:
(1)改变拥有者和群组 并显示改变信息
chown -c mail:mail log2012.log
(2)改变文件群组
chown -c :mail t.log
(3)改变文件夹及子文件目录属主及属组为 mail
chown -cR mail: test/
将源文件复制至目标文件,或将多个源文件复制至目标目录。
注意:命令行复制,若是目标文件已经存在会提示是否覆盖,而在 shell 脚本中,若是不加 -i 参数,则不会提示,而是直接覆盖!
-i 提示 -r 复制目录及目录内全部项目 -a 复制的文件与原文件时间同样
实例:
(1)复制 a.txt 到 test 目录下,保持原文件时间,若是原文件存在提示是否覆盖。
cp -ai a.txt test
(2)为 a.txt 建议一个连接(快捷方式)
cp -s a.txt link_a.txt
用于在文件树中查找文件,并做出相应的处理。
命令格式:
find pathname -options [-print -exec -ok ...]
命令参数:
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。 -print: find命令将匹配的文件输出到标准输出。 -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。 -ok: 和-exec的做用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每个命令以前,都会给出提示,让用户来肯定是否执行。
命令选项:
-name 按照文件名查找文件 -perm 按文件权限查找文件 -user 按文件属主查找文件 -group 按照文件所属的组来查找文件。 -type 查找某一类型的文件,诸如: b - 块设备文件 d - 目录 c - 字符设备文件 l - 符号连接文件 p - 管道文件 f - 普通文件
实例:
(1)查找 48 小时内修改过的文件
find -atime -2
(2)在当前目录查找 以 .log 结尾的文件。 . 表明当前目录
find ./ -name '*.log'
(3)查找 /opt 目录下 权限为 777 的文件
find /opt -perm 777
(4)查找大于 1K 的文件
find -size +1000c
查找等于 1000 字符的文件
find -size 1000c
-exec 参数后面跟的是 command 命令,它的终止是以 ; 为结束标志的,因此这句命令后面的分号是不可缺乏的,考虑到各个系统中分号会有不一样的意义,因此前面加反斜杠。{} 花括号表明前面find查找出来的文件名。
head 用来显示档案的开头至标准输出中,默认 head 命令打印其相应文件的开头 10 行。
经常使用参数:
-n<行数> 显示的行数(行数为复数表示从最后向前数)
实例:
(1)显示 1.log 文件中前 20 行
head 1.log -n 20
(2)显示 1.log 文件前 20 字节
head -c 20 log2014.log
(3)显示 t.log最后 10 行
head -n -10 t.log
less 与 more 相似,但使用 less 能够随意浏览文件,而 more 仅能向前移动,却不能向后移动,并且 less 在查看以前不会加载整个文件。
经常使用命令参数:
-i 忽略搜索时的大小写 -N 显示每行的行号 -o <文件名> 将less 输出的内容在指定文件中保存起来 -s 显示连续空行为一行 /字符串:向下搜索“字符串”的功能 ?字符串:向上搜索“字符串”的功能 n:重复前一个搜索(与 / 或 ? 有关) N:反向重复前一个搜索(与 / 或 ? 有关) -x <数字> 将“tab”键显示为规定的数字空格 b 向后翻一页 d 向后翻半页 h 显示帮助界面 Q 退出less 命令 u 向前滚动半页 y 向前滚动一行 空格键 滚动一行 回车键 滚动一页 [pagedown]: 向下翻动一页 [pageup]: 向上翻动一页
实例:
(1)ps 查看进程信息并经过 less 分页显示
ps -aux | less -N
(2)查看多个文件
less 1.log 2.log
能够使用 n 查看下一个,使用 p 查看前一个。
功能是为文件在另一个位置创建一个同步的连接,当在不一样目录须要该问题时,就不须要为每个目录建立一样的文件,经过 ln 建立的连接(link)减小磁盘占用量。
连接分类:软件连接及硬连接
软连接:
硬连接:
须要注意:
经常使用参数:
-b 删除,覆盖之前创建的连接 -s 软连接(符号连接) -v 显示详细处理过程
实例:
(1)给文件建立软连接,并显示操做信息
ln -sv source.log link.log
(2)给文件建立硬连接,并显示操做信息
ln -v source.log link1.log
(3)给目录建立软连接
ln -sv /opt/soft/test/test3 /opt/soft/test/test5
locate 经过搜寻系统内建文档数据库达到快速找到档案,数据库由 updatedb 程序来更新,updatedb 是由 cron daemon 周期性调用的。默认状况下 locate 命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是 locate 所找到的档案如果最近才创建或 刚改名的,可能会找不到,在内定值中,updatedb 天天会跑一次,能够由修改 crontab 来更新设定值 (etc/crontab)。
locate 与 find 命令类似,能够使用如 *、? 等进行正则匹配查找
经常使用参数:
-l num(要显示的行数) -f 将特定的档案系统排除在外,如将proc排除在外 -r 使用正则运算式作为寻找条件
实例:
(1)查找和 pwd 相关的全部文件(文件名中包含 pwd)
locate pwd
(2)搜索 etc 目录下全部以 sh 开头的文件
locate /etc/sh
(3)查找 /var 目录下,以 reason 结尾的文件
locate -r '^/var.*reason$'(其中.表示一个字符,*表示任务多个;.*表示任意多个字符)
功能相似于 cat, more 会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示。
命令参数:
+n 从笫 n 行开始显示 -n 定义屏幕大小为n行 +/pattern 在每一个档案显示前搜寻该字串(pattern),而后从该字串前两行以后开始显示 -c 从顶部清屏,而后显示 -d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能 -l 忽略Ctrl+l(换页)字符 -p 经过清除窗口而不是滚屏来对文件进行换页,与-c选项类似 -s 把连续的多个空行显示为一行 -u 把文件内容中的下画线去掉
经常使用操做命令:
Enter 向下 n 行,须要定义。默认为 1 行 Ctrl+F 向下滚动一屏 空格键 向下滚动一屏 Ctrl+B 返回上一屏 = 输出当前行的行号 :f 输出文件名和当前行的行号 V 调用vi编辑器 !命令 调用Shell,并执行命令 q 退出more
实例:
(1)显示文件中从第3行起的内容
more +3 text.txt
(2)在所列出文件目录详细信息,借助管道使每次显示 5 行
ls -l | more -5
按空格显示下 5 行。
移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
当第二个参数为目录时,第一个参数能够是多个以空格分隔的文件或目录,而后移动第一个参数指定的多个文件到第二个参数指定的目录中。
实例:
(1)将文件 test.log 重命名为 test1.txt
mv test.log test1.txt
(2)将文件 log1.txt,log2.txt,log3.txt 移动到根的 test3 目录中
mv llog1.txt log2.txt log3.txt /test3
(3)将文件 file1 更名为 file2,若是 file2 已经存在,则询问是否覆盖
mv -i log1.txt log2.txt
(4)移动当前文件夹下的全部文件到上一级目录
mv * ../
删除一个目录中的一个或多个文件或目录,若是没有使用 -r 选项,则 rm 不会删除目录。若是使用 rm 来删除文件,一般仍能够将该文件恢复原状。
rm [选项] 文件…
实例:
(1)删除任何 .log 文件,删除前逐一询问确认:
rm -i *.log
(2)删除 test 子目录及子目录中全部档案删除,而且不用一一确认:
rm -rf test
(3)删除以 -f 开头的文件
rm -- -f*
用于显示指定文件末尾内容,不指定文件时,做为输入信息进行处理。经常使用查看日志文件。
经常使用参数:
-f 循环读取(经常使用于查看递增的日志文件) -n<行数> 显示行数(从后向前)
(1)循环读取逐渐增长的文件内容
ping 127.0.0.1 > ping.log &
后台运行:可以使用 jobs -l 查看,也可以使用 fg 将其移到前台运行。
tail -f ping.log
(查看日志)
Linux touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会创建一个新的文件。
ls -l 能够显示档案的时间记录。
语法
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
实例
使用指令"touch"修改文件"testfile"的时间属性为当前系统时间,输入以下命令:
$ touch testfile #修改文件的时间属性
首先,使用ls命令查看testfile文件的属性,以下所示:
$ ls -l testfile #查看文件的时间属性 #原来文件的修改时间为16:09 -rw-r--r-- 1 hdd hdd 55 2011-08-22 16:09 testfile
执行指令"touch"修改文件属性之后,并再次查看该文件的时间属性,以下所示:
$ touch testfile #修改文件时间属性为当前系统时间 $ ls -l testfile #查看文件的时间属性 #修改后文件的时间属性为当前系统时间 -rw-r--r-- 1 hdd hdd 55 2011-08-22 19:53 testfile
使用指令"touch"时,若是指定的文件不存在,则将建立一个新的空白文件。例如,在当前目录下,使用该指令建立一个空白文件"file",输入以下命令:
$ touch file #建立一个名为“file”的新的空白文件
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被普遍使用。
vim +10 filename.txt
。vim +/search-term filename.txt
。vim -R /etc/passwd
。基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
简单的说,咱们能够将这三个模式想成底下的图标来表示:
whereis 命令只能用于程序名的搜索,并且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。若是省略参数,则返回全部信息。whereis 及 locate 都是基于系统内建的数据库进行搜索,所以效率很高,而find则是遍历硬盘查找文件。
经常使用参数:
-b 定位可执行文件。 -m 定位帮助文件。 -s 定位源代码文件。 -u 搜索默认路径下除可执行文件、源代码文件、帮助文件之外的其它文件。
实例:
(1)查找 locate 程序相关文件
whereis locate
(2)查找 locate 的源码文件
whereis -s locate
(3)查找 lcoate 的帮助文件
whereis -m locate
在 linux 要查找某个文件,但不知道放在哪里了,能够使用下面的一些命令来搜索:
which 查看可执行文件的位置。 whereis 查看文件的位置。 locate 配合数据库查看文件位置。 find 实际搜寻硬盘查询文件名称。
which 是在 PATH 就是指定的路径中,搜索某个系统命令的位置,并返回第一个搜索结果。使用 which 命令,就能够看到某个系统命令是否存在,以及执行的究竟是哪个位置的命令。
经常使用参数:
-n 指定文件名长度,指定的长度必须大于或等于全部文件中最长的文件名。
实例:
(1)查看 ls 命令是否存在,执行哪一个
which ls
(2)查看 which
which which
(3)查看 cd
which cd(显示不存在,由于 cd 是内建命令,而 which 查找显示是 PATH 中的命令)
查看当前 PATH 配置:
echo $PATH
或使用 env 查看全部环境变量及对应值
强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。
grep 的工做方式是这样的,它在一个或多个文件中搜索字符串模板。若是模板包括空格,则必须被引用,模板后的全部字符串被看做文件名。搜索的结果被送到标准输出,不影响原文件内容。
命令格式:
grep [option] pattern file|dir
经常使用参数:
-A n --after-context显示匹配字符后n行 -B n --before-context显示匹配字符前n行 -C n --context 显示匹配字符先后n行 -c --count 计算符合样式的列数 -i 忽略大小写 -l 只列出文件内容符合指定的样式的文件名称 -f 从文件中读取关键词 -n 显示匹配内容的所在文件中行数 -R 递归查找文件夹
grep 的规则表达式:
^ #锚定行的开始 如:'^grep'匹配全部以grep开头的行。 $ #锚定行的结束 如:'grep$'匹配全部以grep结尾的行。 . #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,而后是p。 * #匹配零个或多个先前字符 如:'*grep'匹配全部一个或多个空格后紧跟grep的行。 .* #一块儿用表明任意字符。 [] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。 [^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。 \(..\) #标记匹配字符,如'\(love\)',love被标记为1。 \< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。 \> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。 x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。 x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。 x\{m,n\} #重复字符x,至少m次,很少于n次,如:'o\{5,10\}'匹配5--10个o的行。 \w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,而后是p。 \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。 \b #单词锁定符,如: '\bgrep\b'只匹配grep。
实例:
(1)查找指定进程
ps -ef | grep svn
(2)查找指定进程个数
ps -ef | grep svn -c
(3)从文件中读取关键词
cat test1.txt | grep -f key.log
(4)从文件夹中递归查找以grep开头的行,并只列出文件
grep -lR '^grep' /tmp
(5)查找非x开关的行内容
grep '^[^x]' test.txt
(6)显示包含 ed 或者 at 字符的内容行
grep -E 'ed|at' test.txt
wc(word count)功能为统计指定的文件中字节数、字数、行数,并将统计结果输出
命令格式:
wc [option] file..
命令参数:
-c 统计字节数 -l 统计行数 -m 统计字符数 -w 统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
实例:
(1)查找文件的 行数 单词数 字节数 文件名
wc text.txt
结果:
7 8 70 test.txt
(2)统计输出结果的行数
cat test.txt | wc -l
cd(changeDirectory) 命令语法:
cd [目录名]
说明:切换当前目录至 dirName。
实例:
(1)进入要目录
cd /
(2)进入 “home” 目录
cd ~
(3)进入上一次工做路径
cd -
(4)把上个命令的参数做为cd参数使用。
cd !$
显示磁盘空间使用状况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,若是没有文件名被指定,则全部当前被挂载的文件系统的可用空间将被显示。默认状况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示:
-a 所有文件系统列表 -h 以方便阅读的方式显示信息 -i 显示inode信息 -k 区块为1024字节 -l 只显示本地磁盘 -T 列出文件系统类型
实例:
(1)显示磁盘使用状况
df -l
(2)以易读方式列出全部文件系统及其类型
df -haT
du 命令也是查看使用空间的,可是与 df 命令不一样的是 Linux du 命令是对文件和目录磁盘使用的空间的查看:
命令格式:
du [选项] [文件]
经常使用参数:
-a 显示目录中全部文件大小 -k 以KB为单位显示文件大小 -m 以MB为单位显示文件大小 -g 以GB为单位显示文件大小 -h 以易读方式显示文件大小 -s 仅显示总计 -c或--total 除了显示个别目录或文件的大小外,同时也显示全部目录或文件的总和
实例:
(1)以易读方式显示文件夹内及子文件夹大小
du -h scf/
(2)以易读方式显示文件夹内全部文件大小
du -ah scf/
(3)显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和
du -hc test/ scf/
(4)输出当前目录下各个子目录所使用的空间
du -hc --max-depth=1 scf/
就是 list 的缩写,经过 ls 命令不只能够查看 linux 文件夹包含的文件,并且能够查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。
经常使用参数搭配:
ls -a 列出目录全部文件,包含以.开始的隐藏文件 ls -A 列出除.及..的其它文件 ls -r 反序排列 ls -t 以文件修改时间排序 ls -S 以文件大小排序 ls -h 以易读大小显示 ls -l 除了文件名以外,还将文件的权限、全部者、文件大小等信息详细列出来
实例:
(1) 按易读方式按时间反序排序,并显示文件详细信息
ls -lhrt
(2) 按大小反序显示文件详细信息
ls -lrS
(3)列出当前目录中全部以"t"开头的目录的详细内容
ls -l t*
(4) 列出文件绝对路径(不包含隐藏文件)
ls | sed "s:^:`pwd`/:"
(5) 列出文件绝对路径(包含隐藏文件)
find $pwd -maxdepth 1 | xargs ls -ld
mkdir 命令用于建立文件夹。
可用选项:
实例:
(1)当前工做目录下建立名为 t的文件夹
mkdir t
(2)在 tmp 目录下建立路径为 test/t1/t 的目录,若不存在,则建立:
mkdir -p /tmp/test/t1/t
pwd 命令用于查看当前工做目录路径。
实例:
(1)查看当前路径
pwd
(2)查看软连接的实际路径
pwd -P
从一个目录中删除一个或多个子目录项,删除某目录时也必须具备对其父目录的写权限。
注意:不能删除非空目录
实例:
(1)当 parent 子目录被删除后使它也成为空目录的话,则顺便一并删除:
rmdir -p parent/child/child11
ifconfig -a
。ifconfig eth0 up
和 ifconfig eth0 down
。iptables ,是一个配置 Linux 内核防火墙的命令行工具。功能很是强大,对于咱们开发来讲,主要掌握如何开放端口便可。例如:
把来源 IP 为 192.168.1.101 访问本机 80 端口的包直接拒绝:iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT
。
开启 80 端口,由于web对外都是这个端口
iptables -A INPUT -p tcp --dport 80 -j ACCEP 1
另外,要注意使用 iptables save
命令,进行保存。不然,服务器重启后,配置的规则将丢失。
Linux netstat命令用于显示网络状态。
利用netstat指令可以让你得知整个Linux系统的网络状况。
语法
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
参数说明:
实例
如何查看系统都开启了哪些端口?
[root@centos6 ~ 13:20 #55]# netstat -lnp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1035/sshd tcp 0 0 :::22 :::* LISTEN 1035/sshd udp 0 0 0.0.0.0:68 0.0.0.0:* 931/dhclient Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 6825 1/init @/com/ubuntu/upstart unix 2 [ ACC ] STREAM LISTENING 8429 1003/dbus-daemon /var/run/dbus/system_bus_socket
如何查看网络链接情况?
[root@centos6 ~ 13:22 #58]# netstat -an Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 192.168.147.130:22 192.168.147.1:23893 ESTABLISHED tcp 0 0 :::22 :::* LISTEN udp 0 0 0.0.0.0:68 0.0.0.0:*
如何统计系统当前进程链接数?
netstat -an | grep ESTABLISHED | wc -l
。177
。一共有 177 链接数。用 netstat 命令配合其余命令,按照源 IP 统计全部到 80 端口的 ESTABLISHED 状态连接的个数?
严格来讲,这个题目考验的是对 awk 的使用。
首先,使用 netstat -an|grep ESTABLISHED
命令。结果以下:
tcp 0 0 120.27.146.122:80 113.65.18.33:62721 ESTABLISHED tcp 0 0 120.27.146.122:80 27.43.83.115:47148 ESTABLISHED tcp 0 0 120.27.146.122:58838 106.39.162.96:443 ESTABLISHED tcp 0 0 120.27.146.122:52304 203.208.40.121:443 ESTABLISHED tcp 0 0 120.27.146.122:33194 203.208.40.122:443 ESTABLISHED tcp 0 0 120.27.146.122:53758 101.37.183.144:443 ESTABLISHED tcp 0 0 120.27.146.122:27017 23.105.193.30:50556 ESTABLISHED
Linux ping命令用于检测主机。
执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,于是得知该主机运做正常。
指定接收包的次数
ping -c 2 www.baidu.com
Linux telnet命令用于远端登入。
执行telnet指令开启终端机阶段做业,并登入远端主机。
语法
telnet [-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通讯端口>]
参数说明:
实例
登陆远程主机
# 登陆IP为 192.168.0.5 的远程主机 telnet 192.168.0.5
显示或设定系统的日期与时间。
命令参数:
-d<字符串> 显示字符串所指的日期与时间。字符串先后必须加上双引号。 -s<字符串> 根据字符串来设置日期与时间。字符串先后必须加上双引号。 -u 显示GMT。 %H 小时(00-23) %I 小时(00-12) %M 分钟(以00-59来表示) %s 总秒数。起算时间为1970-01-01 00:00:00 UTC。 %S 秒(以本地的惯用法来表示) %a 星期的缩写。 %A 星期的完整名称。 %d 日期(以01-31来表示)。 %D 日期(含年月日)。 %m 月份(以01-12来表示)。 %y 年份(以00-99来表示)。 %Y 年份(以四位数来表示)。
实例:
(1)显示下一天
date +%Y%m%d --date="+1 day" //显示下一天的日期
(2)-d参数使用
date -d "nov 22" 今年的 11 月 22 日是星期三 date -d '2 weeks' 2周后的日期 date -d 'next monday' (下周一的日期) date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d date -d last-month +%Y%m(上个月是几月) date -d next-month +%Y%m(下个月是几月)
显示系统内存使用状况,包括物理内存、交互区内存(swap)和内核缓冲区内存。
命令参数:
-b 以Byte显示内存使用状况 -k 以kb为单位显示内存使用状况 -m 以mb为单位显示内存使用状况 -g 以gb为单位显示内存使用状况 -s<间隔秒数> 持续显示内存 -t 显示内存使用总合
实例:
(1)显示内存使用状况
free free -k free -m
(2)以总和的形式显示内存的使用信息
free -t
(3)周期性查询内存使用状况
free -s 10
发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。若是任没法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9) ,将强制结束进程,使用ps命令或者jobs 命令能够查看进程号。root用户将影响用户的进程,非root用户只能影响本身的进程。
经常使用参数:
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出所有的信号名称 -a 当处理当前进程时,不限制命令名和进程号的对应关系 -p 指定kill 命令只打印相关进程的进程号,而不发送任何信号 -s 指定发送信号 -u 指定用户
实例:
(1)先使用ps查找进程pro1,而后用kill杀掉
kill -9 $(ps -ef | grep pro1)
ps(process status),用来查看当前运行的进程状态,一次性查看,若是须要动态连续结果使用 top
linux上进程有5种状态:
ps 工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO) R 运行 runnable (on run queue) S 中断 sleeping T 中止 traced or stopped Z 僵死 a defunct (”zombie”) process
命令参数:
-A 显示全部进程 a 显示全部进程 -a 显示同一终端下全部进程 c 显示进程真实名称 e 显示环境变量 f 显示进程间的关系 r 显示当前终端运行的进程 -aux 显示全部包含其它使用的进程
实例:
(1)显示当前全部进程环境变量及进程间关系
ps -ef
(2)显示当前全部进程
ps -A
(3)与grep联用查找某进程
ps -aux | grep apache
(4)找出与 cron 与 syslog 这两个服务有关的 PID 号码
ps aux | grep '(cron|syslog)'
Linux rpm 命令用于管理套件。
rpm(redhat package manager) 本来是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,因为它遵循 GPL 规则且功能强大方便,于是广受欢迎。逐渐受到其余发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提高了 Linux 的适用度。
# 查看系统自带jdk rpm -qa | grep jdk # 删除系统自带jdk rpm -e --nodeps 查看jdk显示的数据 # 安装jdk rpm -ivh jdk-7u80-linux-x64.rpm
显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等
经常使用参数:
-c 显示完整的进程命令 -s 保密模式 -p <进程号> 指定进程显示 -n <次数>循环显示次数
实例:
top - 14:06:23 up 70 days, 16:44, 2 users, load average: 1.25, 1.32, 1.35 Tasks: 206 total, 1 running, 205 sleeping, 0 stopped, 0 zombie Cpu(s): 5.9%us, 3.4%sy, 0.0%ni, 90.4%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 32949016k total, 14411180k used, 18537836k free, 169884k buffers Swap: 32764556k total, 0k used, 32764556k free, 3612636k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 28894 root 22 0 1501m 405m 10m S 52.2 1.3 2534:16 java
前五行是当前系统状况总体的统计信息区。
第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明状况以下:
14:06:23 — 当前系统时间
up 70 days, 16:44 — 系统已经运行了70天16小时44分钟(在这期间系统没有重启过的吆!)
2 users — 当前有2个用户登陆系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载状况。
load average数据是每隔5秒钟检查一次活跃的进程数,而后按特定算法计算出的数值。若是这个数除以逻辑CPU的数量,结果高于5的时候就代表系统在超负荷运转了。
第二行,Tasks — 任务(进程),具体信息说明以下:
系统如今共有206个进程,其中处于运行中的有1个,205个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行,cpu状态信息,具体属性说明以下:
5.9%us — 用户空间占用CPU的百分比。 3.4% sy — 内核空间占用CPU的百分比。 0.0% ni — 改变过优先级的进程占用CPU的百分比 90.4% id — 空闲CPU百分比 0.0% wa — IO等待占用CPU的百分比 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比 0.2% si — 软中断(Software Interrupts)占用CPU的百分比
备注:在这里CPU的使用比率和windows概念不一样,须要理解linux系统用户空间和内核空间的相关知识!
第四行,内存状态,具体信息以下:
32949016k total — 物理内存总量(32GB) 14411180k used — 使用中的内存总量(14GB) 18537836k free — 空闲内存总量(18GB) 169884k buffers — 缓存的内存量 (169M)
第五行,swap交换分区信息,具体信息说明以下:
32764556k total — 交换区总量(32GB) 0k used — 使用的交换区总量(0K) 32764556k free — 空闲交换区总量(32GB) 3612636k cached — 缓冲的交换区总量(3.6GB)
第六行,空行。
第七行如下:各进程(任务)的状态监控,项目列信息说明以下:
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时间占用百分比 %MEM — 进程使用的物理内存百分比 TIME+ — 进程使用的CPU时间总计,单位1/100秒 COMMAND — 进程名称(命令名/命令行)
top 交互命令
h 显示top交互命令帮助信息 c 切换显示命令名称和完整命令行 m 之内存使用率排序 P 根据CPU使用百分比大小进行排序 T 根据时间/累计时间进行排序 W 将当前设置写入~/.toprc文件中 o或者O 改变显示项目的顺序
yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。
基於RPM包管理,可以从指定的服务器自动下载RPM包而且安装,能够自动处理依赖性关系,而且一次安装全部依赖的软体包,无须繁琐地一次次下载、安装。
yum提供了查找、安装、删除某一个、一组甚至所有软件包的命令,并且命令简洁而又好记。
实例
安装 pam-devel
[root@www ~]# yum install pam-devel
*.bz2
压缩文件:bzip2 test.txt
。*.bz2
文件:bzip2 -d test.txt.bz2
。*.gz
的压缩文件:gzip test.txt
。*.gz
文件:gzip -d test.txt.gz
。gzip -l *.gz
。用来压缩和解压文件。tar 自己不具备压缩功能,只具备打包功能,有关压缩及解压是调用其它的功能来完成。
弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件经过一些压缩算法变成一个小文件
经常使用参数:
-c 创建新的压缩文件 -f 指定压缩文件 -r 添加文件到已经压缩文件包中 -u 添加改了和现有的文件到压缩包中 -x 从压缩包中抽取文件 -t 显示压缩文件中的内容 -z 支持gzip压缩 -j 支持bzip2压缩 -Z 支持compress解压文件 -v 显示操做过程
有关 gzip 及 bzip2 压缩:
gzip 实例:压缩 gzip fileName .tar.gz 和.tgz 解压:gunzip filename.gz 或 gzip -d filename.gz 对应:tar zcvf filename.tar.gz tar zxvf filename.tar.gz bz2实例:压缩 bzip2 -z filename .tar.bz2 解压:bunzip filename.bz2或bzip -d filename.bz2 对应:tar jcvf filename.tar.gz 解压:tar jxvf filename.tar.bz2
实例:
(1)将文件所有打包成 tar 包
tar -cvf log.tar 1.log,2.log 或tar -cvf log.*
(2)将 /etc 下的全部文件及目录打包到指定目录,并使用 gz 压缩
tar -zcvf /tmp/etc.tar.gz /etc
(3)查看刚打包的文件内容(必定加z,由于是使用 gzip 压缩的)
tar -ztvf /tmp/etc.tar.gz
(4)要压缩打包 /home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
*.zip
文件:unzip test.zip
。*.zip
文件的内容:unzip -l jasper.zip
。