文章目录
Linux的常用指令
如何查看网络的端口号
netstat -tunlp | grep 端口号
如何判断当前的进程号是否有冲突
通过ps -ef | grep xxx可以查看当前软件的进程号
如何判断当前端口号被占用:lsof -i:端口号
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
Linux查看日志的指令
线上查看日志的方式
- cat 文件名 | grep traceId
- grep -A/-C num traced 文件名 - A 表示从前往后看,- C从后往前看 ,num表示行数
- grep traced 文件名 -A30 -B30 查看当前行前30行与后30行里的所有数据
- tail -200f 文件名 动态的查看后200行的日志
- grep ‘xxx’ a.log | grep ‘yyy’
- cat a.log | grep 指定关键字
查看日志前n行:cat 或者 tail 日志文件名 | head -n 数量
示例1: cat catalina.out | head -n 200 # 查看log前200行
示例2: tail catalina.out | head -n 10 # 查看log前10行
查看日志后n行:cat 或者 tail 日志文件名 | tail -n 数量
示例; cat catalina.out | tail -n 200 # 查看log后200 行
示例; tail catalina.out | tail -n 15 # 查看log后15 行
Linux如何从日志里面搜索关键字信息? 如何统计关键字的数目
根据 关键词 查找日志 并返回关键词所在的所有行:
方法一 :
cat 日志文件名 | grep “关键词”
tail 日志文件名 | grep “关键词”
示例1; cat catalina.out | grep "fg" # 返回log日志中包含fg的所有行
示例2; tail catalina.out | grep "88" # 返回log日志中包含88的所有行
方法二: grep -i “关键词” 日志文件名 (与方法一效果相同,写法不同)
示例1; grep -i "21DYN60587" catalina.out"
#返回log日志中包含 21DYN60587 的所有行
需要注意的是:如果日志文件非常大,不建议使用 cat,还有就是 ( “” ‘’ ) 使用单的和双的都可 !
如何查看日志文件中某个字符串出现的次数
grep -o “hello” demo.log | wc -l
案例
假设存在日志文件 hrun.log,查询的关键字为”新增用户”:
根据关键字查看日志cat hrun.log | grep “新增用户”
根据关键字查看后10行日志cat hrun.log | grep “新增用户” -A 10
根据关键字查看前10行日志cat hrun.log | grep “新增用户” -B 10
根据关键字查看前后10行日志,并显示出行号cat -n hrun.log | grep “新增用户” -C 10
查看日志前 50 行cat hrun.log | head -n 50
查看日志后 50 行,并显示出行号cat -n hrun.log | tail -n 50
说明:
- -A 表示关键字之后,After
- -B 表示关键字之前,Before
- -C 表示关键字前后,Context
注意:cat是静态查询,tail是动态查询
Linux命令:查看进程、杀死进程、启动进程等常用的命令
1、查进程
# ps命令查找与进程相关的PID号:
# ps a 显示现行终端机下的所有程序,包括其他用户的程序。
# ps -A 显示所有程序。
# ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。
# ps -e 此参数的效果和指定"A"参数相同。
# ps e 列出程序时,显示每个程序所使用的环境变量。
# ps f 用ASCII字符显示树状结构,表达程序间的相互关系。
# ps -H 显示树状结构,表示程序间的相互关系。
# ps -N 显示所有的程序,除了执行ps指令终端机下的程序之外。
# ps s 采用程序信号的格式显示程序状况。
# ps S 列出程序时,包括已中断的子程序资料。
# ps -t<终端机编号> 指定终端机编号,并列出属于该终端机的程序的状况。
# ps u 以用户为主的格式来显示程序状况。
# ps x 显示所有程序,不以终端机来区分。
最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
# ps aux | grep program_filter_word,ps -ef |grep tomcat
# ps -ef|grep java|grep -v grep 显示出所有的java进程,去处掉当前的grep进程。
2、杀进程
使用kill命令结束进程:kill xxx
常用:kill -9 324(进程号)
# Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:# killall -9 NAME
3.运行进程
进入到进程的执行文件所在的路径下,执行文件 ./文件名。
你可以使用ps命令。它能显示当前运行中进程的相关信息,包括进程的PID。Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息。ps命令能提供一份当前进程的快照。如果你想状态可以自动刷新,可以使用top命令。
ps命令
输入下面的ps命令,显示所有运行中的进程:
# ps aux | less
其中,
-A:显示所有进程
a:显示终端中包括其它用户的所有进程
x:显示无控制终端的进程
任务:查看系统中的每个进程。
# ps -A
# ps -e
任务:查看非root运行的进程
# ps -U root -u root -N
任务:查看用户vivek运行的进程
# ps -u vivek
任务:top命令
top命令提供了运行中系统的动态实时视图。在命令提示行中输入top:
# top
输出:

图1:top命令:显示Linux任务
按q退出,按h进入帮助。
任务:显示进程的树状图。
pstree以树状显示正在运行的进程。树的根节点为pid或init。如果指定了用户名,进程树将以用户所拥有的进程作为根节点。
$ pstree
输出示例:

图2:pstree - 显示进程的树状图
任务:使用ps列印进程树
# ps -ejH
# ps axjf
任务:获得线程信息
输入下列命令:
# ps -eLf
# ps axms
任务:获得安全信息
输入下列命令:
# ps -eo euser,ruser,suser,fuser,f,comm,label
# ps axZ
# ps -eM
任务:将进程快照储存到文件中
输入下列命令:
# top -b -n1 > /tmp/process.log
你也可以将结果通过邮件发给自己:
# top -b -n1 | mail -s 'Process snapshot' you@example.com
任务:查找进程
使用pgrep命令。pgrep能查找当前正在运行的进程并列出符合条件的进程ID。例如显示firefox的进程ID:
$ pgrep firefox
下面命令将显示进程名为sshd、所有者为root的进程。
$ pgrep -u root sshd
向htop和atop说hello
htop是一个类似top的交互式进程查看工具,但是可以垂直和水平滚动来查看所有进程和他们的命令行。进程的相关操作(killing,renicing)不需要输入PID。要安装htop输入命令:
# apt-get install htop
或
# yum install htop
在命令提示行中输入htop:
# htop
输出示例:

图3:htop - Interactive Linux / UNIX process viewer
atop工具
atop是一个用来查看Linux系统负载的交互式监控工具。它能展现系统层级的关键硬件资源(从性能角度)的使用情况,如CPU、内存、硬盘和网络。
它也可以根据进程层级的CPU和内存负载显示哪个进程造成了特定的负载;如果已经安装内核补丁可以显示每个进程的硬盘和网络负载。输入下面的命令启动atop:
atop
输出示例:

图4:AT Computing’s System & Process Monitor
一、ps 命令
ps 命令是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和它所运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等。总之大部分信息都是可以通过执行该命令得到的。ps 命令最常用来监控后台进程的工作情况,因为后台进程是不和屏幕、键盘这些标准输入/输出设备进行通信的,所以如果需要检测后台情况,就需要使用 ps 命令了。它的格式如下所示:格式:ps 〔选项〕其主要选项如下。
-a:显示系统中所有进程的信息。
-e:显示所有进程的信息。
-f:显示进程的所有信息。
-l:以长格式显示进程信息。
-r:只显示正在运行的进程。
-u:显示面向用户的格式(包括用户名、CPU 及内存的使用情况等信息)。
-x:显示所有非控制终端上的进程信息。
-p:显示由进程 ID 指定的进程信息。
-t:显示指定终端上的进程信息。
要对进程进行监测和控制,首先要了解当前进程的情况,当然也就需要查看当前进程的状态了。通过 ps 命令查看进程,根据所显示的信息可以了解哪个进程正在运行、哪个进程被挂起了、进程已运行了多久、进程正在使用的资源、进程的相对优先级,以及进程的标志号(PID)。所有这些信息对用户都很有用,对于系统管理员来说尤为重要。使用 ps -aux 命令可以获得终端上所有用户的有关进程的所有信息,这个也是我们平时用得最多的命令之一,如下所示:
[root@localhost ~]# ps -aux | more
Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQ
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 10348 580 ? Ss Jan23 0:07 init [5]
root 2 0.0 0.0 0 0 ? S< Jan23 0:01 [migration/0]
root 3 0.0 0.0 0 0 ? SN Jan23 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< Jan23 0:00 [watchdog/0]
root 5 0.0 0.0 0 0 ? S< Jan23 0:01 [migration/1]
root 6 0.0 0.0 0 0 ? SN Jan23 0:00 [ksoftirqd/1]
root 7 0.0 0.0 0 0 ? S< Jan23 0:00 [watchdog/1]
root 8 0.0 0.0 0 0 ? S< Jan23 0:00 [migration/2]
root 9 0.0 0.0 0 0 ? SN Jan23 0:00 [ksoftirqd/2]
root 10 0.0 0.0 0 0 ? S< Jan23 0:00 [watchdog/2]
root 11 0.0 0.0 0 0 ? S< Jan23 0:00 [migration/3]
....
USER:表示启动进程的用户。PID:表示进程标志号。%CPU:表示运行该进程占用 CPU 的时间与该进程总的运行时间之比。%MEM:表示该进程占用内存与总内存之比。VSZ:表示占用的虚拟内存大小,以 KB 为单位。RSS:为进程占用的物理内存值,以 KB 为单位。TTY:表示该进程建立时所对应的终端,“?”表示该进程不占用终端。STAT:表示进程的运行状态。包括以下几种代码:D,不可中断的睡眠;R,就绪(在可运行队列中);S,睡眠;T,被跟踪或停止;Z,终止(僵死)的进程,这些进程不存在,但暂时无法消除;W,没有足够的内存分页可分配;<,高优先级的进程;N,低优先级的进程;L,有内存分页分配并锁在内存体内(实时系统或 I/O)。START:为进程开始时间。TIME:为执行的时间。COMMAND:是对应的命令名。
由于 ps 执行后结果太多了,所以我们一般会带上 grep 参数来精确定位我们需要的进程号。例如,我们要查看 Nginx 占用的进程,可以用命令 ps -axugrep nginx,如下所示:
〔root@localhost ~〕# ps -axu| grep -v grep| grep nginx
Warning: bad syntax, perhaps a bogus ‘-’? See /usr/share/doc/procps-3.2.7/FAQ
root 4342 0.0 0.0 41096 896 ?Ss Mar16 0:00 nginx: master process /usr/local/webserver/nginx/sbin/nginx
www 4343 0.0 0.6 65920 26232 ?SMar16 0:05 nginx: worker process
www 4344 0.0 0.6 65920 26160 ?SMar16 0:02 nginx: worker process
www 4345 0.0 0.6 66076 26460 ?SMar16 0:03 nginx: worker process
www 4346 0.0 0.6 65920 26104 ?SMar16 0:03 nginx: worker process
www 4347 0.0 0.6 66052 26228 ?SMar16 0:04 nginx: worker process
www 4348 0.0 0.6 66012 26372 ?SMar16 0:04 nginx: worker process
www 4349 0.0 0.6 65788 26076 ?SMar16 0:03 nginx: worker process
www 4350 0.0 0.6 65920 26188 ?SMar16 0:06 nginx: worker process
二、top 命令
top 命令可动态显示服务器的进程信息。top 命令和 ps 命令的基本作用是相同的,都显示系统当前进程的状况。
但 top 是一个动态显示过程,即用户可以通过按键来不断刷新当前状态。此命令的使用举例如下所示:
top - 11:22:52 up 90 days, 1:18, 1 user, load average: 1.06, 1.18, 1.08
Tasks: 506 total, 1 running, 504 sleeping, 0 stopped, 1 zombie
Cpu(s): 0.9%us, 0.2%sy, 0.0%ni, 98.3%id, 0.0%wa, 0.0%hi, 0.6%si, 0.0%st
Mem: 8171912k total, 6772308k used, 1399604k free, 387668k buffers
Swap: 16385256k total, 52964k used, 16332292k free, 2112540k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17700 root 19 0 3205m 2.0g 16m S 9.3 25.9 1362:18 java
3772 root 20 0 3878m 1.1g 9128 S 5.6 14.1 62:24.67 java
15019 root 15 0 13004 1424 804 R 0.7 0.0 0:00.58 top
4499 root 15 0 0 0 0 S 0.3 0.0 10:25.90 nfsd
4503 root 15 0 0 0 0 S 0.3 0.0 10:15.94 nfsd
14018 daemon 15 0 5156 1948 1052 S 0.3 0.0 0:00.06 httpd
1 root 15 0 10348 580 548 S 0.0 0.0 0:07.59 init
2 root RT -5 0 0 0 S 0.0 0.0 0:01.25 migration/0
3 root 34 19 0 0 0 S 0.0 0.0 0:00.32 ksoftirqd/0
4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
5 root RT -5 0 0 0 S 0.0 0.0 0:01.26 migration/1
6 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/1
7 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/1
8 root RT -5 0 0 0 S 0.0 0.0 0:00.25 migration/2
9 root 34 19 0 0 0 S 0.0 0.0 0:00.32 ksoftirqd/2
10 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/2
11 root RT -5 0 0 0 S 0.0 0.0 0:00.23 migration/3
12 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/3
13 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/3
14 root RT -5 0 0 0 S 0.0 0.0 0:00.20 migration/4
15 root 34 19 0 0 0 S 0.0 0.0 0:00.25 ksoftirqd/4
.....
第一行内容依次表示当前时间、系统启动的时间、当前系统登录的用户数、平均负载。第二行依次显示的是所有启动的、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前 CPU 的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区的使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的交换分区。第六行显示的内容最多,下面分别进行详细解释。
PID(Process ID):进程标志号,是非零正整数。
USER:进程所有者的用户名。
PR:进程的优先级别。
NI:进程的优先级别数值。
VIRT:进程占用的虚拟内存值。
RES:进程占用的物理内存值。
SHR:进程使用的共享内存值。
STAT:进程的状态,其中 S 表示休眠,R 表示正在运行,Z 表示僵死状态,N 表示该进程优先值是负数。
%CPU:该进程占用的 CPU 使用率。
%MEM:该进程占用的物理内存和总内存的百分比。
TIME:该进程启动后占用的总 CPU 时间。
COMMAND:进程启动的启动命令名称,如果这一行显示不下,在进程中会有一个完整的命令行。
在 top 命令使用过程中,还可以使用一些交互的命令来完成其他参数的功能。这些命令是通过快捷键启动的,格式如下所示:<空格>:立刻刷新其主要参数如下所示。
P:根据 CPU 使用的多少进行排序。
T:根据时间、累计时间排序。
q:退出 top 命令。
m:切换显示内存信息。
t:切换显示进程和 CPU 状态信息。
c:切换显示命令名称和完整命令行。
M:根据使用内存的大小进行排序。
W:将当前设置写入~/.toprc 文件中,这是写 top 配置文件的推荐方法。
三、pgrep 命令
pgrep 命令的作用是查找当前运行的进程,并列出匹配给定条件进程的 PID。所有的条件都必须匹配才会被列出。使用权限为所有用户。
以下是我在一台 64 位 FreeBSD8.1 x86_64 的机器上以用户名 andrewyu 查看的 ngnix 的所有进程号。
[root@loalhost ~]#pgrep nginx
2834
2833
2832
2831
2830
2828
2827
2826
2825
四、kill 命令
kill 命令的作用是终止一个进程。其格式如下:
kill 〔-s signal |-p〕 〔-a〕pid…
kill -l 〔 signal 〕
它的主要选项如下所示。
-s:指定发送的信号。
-p:模拟发送信号。
-l:指定信号的名称列表。
pid:要终止的进程的 ID 号。
signal:表示信号。
kill 可将指定的信息送至程序中。预设的信息为 SIGTERM(15),可将指定程序终止。若仍无法终止该程序,则可以使用 SIGKILL(9)信息尝试强制删除程序。kill 命令的工作原理是,向 Linux 系统的内核发送一个系统操作信号和某个程序的进程标志号,然后系统内核就可以对进程标志号指定的进程进行操作了。当需要中断一个前台进程的时候,通常使用 Ctrl+C 组合键;但是对于一个后台进程来说,就不是一个组合键所能解决的了,这时就必须使用 kill 命令。另外,kill -9 可以强制杀掉进程,尤其适用于僵尸进程。
五、killall 命令
killall 命令的作用是通过程序的名字,直接杀死所有进程,这里简单介绍一下。如果要杀掉 nginx 的所有进程,要是用 kill 的话就要执行 9 次,但如果用 killall nginx 则能很轻松地一次性解决问题。另外,大家有兴趣也可以了解一下 pkill 的用法,在服务器里用它来“踢人”还是很方便的,这个命令在工作中我们用得不多,大家稍微了解一下即可。
在 Linux 下,最强大的进程管理命令莫过于 ps 和 top 了,我们应该掌握它们的详细语法,在工作中灵活地使用它们。
Linux关于权限的指令
一、命令简介
chmod 用来变更文件或目录的访问权限。
chmod 仅限文件属主和超级用户 root 使用。
Linux 文件与目录的权限有三种范围,属主(u,user)、属组(g,group)与其它(o,other),全部用户使用 a(all)表示。每个范围的权限由三个比特位表示,从左至右分别表示 r(read,读)、w(write,写)与 x(execute,可执行)。权限可以使用字符或八进制数字表示,r 对应数字 4,w 对应数字 2,x 对应数字 1。如果相应的权限位没有权限,使用ls -l命令查看时,显示为横杠-。
如下图所示:

注意:
(1)当使用 chmod 改变符号链接的权限时,实际上改变的是目标文件的权限;chmod 无法更改其符号链接的权限,这不是一个 bug,因为符号链接的权限从未被使用过。
(2)chmod 在递归时,遇到符号链接则会忽略之。
解释linux drwxr-xr-x的含义

如上图,我们看到文件有drwxr-xr-x的权限:
第一位表示文件类型。d是目录文件,l是链接文件,-是普通文件,p是管道
第2-4位表示这个文件的属主拥有的权限,r是读,w是写,x是执行。
第5-7位表示和这个文件属主所在同一个组的用户所具有的权限。
第8-10位表示其他用户所具有的权限。
二、chmod语法
chmod [-cfvR] [–help] [–version] mode file…
参数说明
mode : 权限设定字串,格式如下 :
[ugoa…][[±=][rwxX]…][,…]
其中:
- u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
- +表示增加权限、- 表示取消权限、= 表示唯一设定权限。
- r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。
其他参数说明:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本
三、实例
(1)将目前目录下的所有文件与子目录皆设为任何人均可读、写、可执行:
chmod -R 777 *
或
chmod -R a=rwx *
(2)将文件 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
或
chmod a+r file1.txt
或
chmod +r file1.txt
(3)减去全部用户对文件 test.sh 的执行权限。
chmod -x test.sh
# 或
chmod a-x test.sh
(4)分别使用符号方式和数字方式为文件 test.sh 设置新的权限为 rwxr–r–。
符号方式
chmod a=rwx,g=r,o=r test.sh
数字方式
chmod 744 test.sh
参考
linux常用命令(7):chmod命令(给文件赋读写权限/chmod 777)
grep的基本查询
grep命令可以用于在文件中查找指定内容,并将包含该内容的行打印出来。以下是几种不同的实现方法:
使用基本语法格式:
(1)grep “要查找的内容” 文件名
例如:要在一个名为file.txt的文件中查找包含"hello"的行,可以使用命令:
grep "hello" file.txt
(2)同时查找多个文件:grep “要查找的内容” 文件1 文件2 文件3 …
例如:要在file1.txt、file2.txt和file3.txt的文件中查找包含"world"的行,
可以使用命令:grep "world" file1.txt file2.txt file3.txt
(3)使用正则表达式进行模式匹配:
grep -E “正则表达式” 文件名
例如:要在file.txt文件中查找以字母开头的行,可以使用命令:
grep -E "^[a-zA-Z]" file.txt
(4)忽略字符大小写:
grep -i “要查找的内容” 文件名
例如:要在file.txt文件中查找包含"Hello"(不区分大小写)的行,可以使用命令:
grep -i "Hello" file.txt
(5)递归查找子目录中的文件:
grep -r “要查找的内容” 目录名
例如:要在当前目录及其子目录中查找包含"test"的行,可以使用命令:
grep -r "test" .
(6)只打印匹配的内容:
grep -o “要查找的内容” 文件名
例如:要在file.txt文件中只打印出包含"example"的内容,可以使用命令:
grep -o "example" file.txt
这些是一些常用的grep命令的实现方法,可以根据具体需求选用适当的方式来查找文件内容。
grep的高亮查询
grep 是一个强大的文本搜索工具,它允许你在文件中搜索匹配特定模式的行。为了使搜索结果更加突出和易于阅读,你可以使用 --color 选项来高亮显示匹配的文本。
以下是如何使用 grep 进行高亮查询的示例:
(1)基本用法:
grep --color=auto ‘pattern’ filename
`在这里,'pattern' 是你要搜索的`文本或正则表达式,而 'filename' 是你要搜索的文件名。
--color=auto 选项告诉 grep 在输出中自动高亮匹配的文本。
(2). 递归搜索:
如果你想在一个目录及其子目录中递归搜索,可以使用 -r 或 -R 选项:
grep -r --color=auto ‘pattern’ directory/
(3)忽略大小写:
为了进行不区分大小写的搜索,你可以添加 -i 选项:
grep -i --color=auto ‘pattern’ filename
(4)显示行号:
如果你还想看到匹配行的行号,可以使用 -n 选项:
grep -n --color=auto ‘pattern’ filename
(5)高亮查询多个文件:
你可以同时查询多个文件,例如:
grep -n --color=auto ‘pattern’ file1 file2 file3
(6)使用正则表达式:
grep 默认支持基本正则表达式。但是,如果你想使用扩展正则表达式,可以使用 -E 选项:
grep -E --color=auto ‘pattern1|pattern2’ filename
(7)高亮查询并统计匹配次数:
如果你想看到每个文件的匹配次数,可以使用 -c 选项:
grep -c --color=auto ‘pattern’ filename
(8)持久化高亮:
如果你希望 grep 的高亮效果在重定向到文件或另一个命令时仍然保持,你可以使用 --color=always 而不是 --color=auto。
(9)默认高亮:
如果你经常使用 grep 并希望默认高亮显示匹配的文本,可以设置 GREP_OPTIONS 环境变量:
export GREP_OPTIONS=‘–color=auto’
这样,每次你运行 grep 时,匹配的文本都会自动高亮显示
6万+

被折叠的 条评论
为什么被折叠?



