首页 文章 精选 留言 我的

精选列表

搜索[linux],共10008篇文章
优秀的个人博客,低调大师

Linux动态监控进程

17.1 介绍 top与ps命令很相似。它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程 17.2 语法 top [选项] 常用选项 交互操作 17.3 实例 (1)监视特定用户 top::输入此命令,按回车键,查看执行的进程。 u:然后输入u,回车,再输入用户名,即可。 (2)终止指定的进程 输入“k”回车,再输入要结束的进程ID号。 (3)指定系统状态更新的时间 top -d 10 17.4 查看系统网络情况 (1)基本语法 netstat [选项] (2)选项说明 -an 按一定顺序排列输出 -p 显示哪个进程在调用 (3)案例 查看系统所有的网络服务 查看服务名为sshd的服务的信息。

优秀的个人博客,低调大师

linux目录操作命令

目录的创建 比如我要在根目录下创建lives/human/man/programmer/目录,怎么创建? 阶梯式创建目录 ---mkdir 首先创建lives,其次创建human,进而创建man,然后创建programmer: [root@localhost /]# mkdir /lives [root@localhost /]# mkdir /lives/human [root@localhost /]# mkdir /lives/human/man [root@localhost /]# mkdir /lives/human/man/programmer 是不是有些繁琐?是!但是,这样创建目录,可以控制每一层目录的创建符合你的预期,错了,立马可以纠正。 跳跃式创建目录 ---mkdir -p 比如你想在/lives/human/下创建woman/consumer目录,问题是此时并没有woman目录,只有在woman的基础上才能创建onsumer, 如果强制创建,你将会看到: [root@localhost /]# mkdir /lives/human/woman/consumer mkdir: 无法创建目录"/lives/human/woman/consumer": 没有那个文件或目录 那么如何解决级联创建目录? [root@localhost /]# mkdir -p /lives/human/woman/consumer 此时的目录结构如下: [root@localhost /]# tree lives/ lives/ └── human ├── man │ ├── programmer │ └── scientist └── woman └── consumer 目录的切换 切换到父目录 切换到上一次目录 切换到当前用户主文件夹 切换到父目录:cd .. [root@localhost programmer]# pwd /lives/human/man/programmer [root@localhost programmer]# cd .. [root@localhost man]# pwd /lives/human/man 切换到上一次目录:cd - [root@localhost man]# pwd /lives/human/man [root@localhost man]# cd - /lives/human/man/programmer [root@localhost programmer]# 切换到当前用户主文件夹: cd ~或者 cd [root@localhost programmer]# pwd /lives/human/man/programmer [root@localhost programmer]# cd [root@localhost ~]# pwd /root 目录的删除 基本删除:删除的目录为空,被删除的目录下不能有目录或者文件 [root@localhost human]# pwd /lives/human [root@localhost human]# rmdir man rmdir: 删除 "man" 失败: 目录非空 [root@localhost man]# pwd /lives/human/man [root@localhost man]# rmdir scientist/ [root@localhost man]# ls -l 总用量 4 drwxr-xr-x. 2 root root 4096 5月 10 20:04 programmer 级联删除:无论目录是否为空,一概删除 [root@localhost human]# tree . ├── man │ └── programmer └── woman └── consumer 删除woman下的consumer, [root@localhost human]# rm -r woman/ rm:是否进入目录"woman"? 每删除一个非空目录都要提醒,很讨厌,希望不提醒,可以这样删: [root@localhost human]# tree . ├── man │ └── programmer └── woman └── consumer 4 directories, 0 files [root@localhost human]# rm -f -r woman/ [root@localhost human]# tree . └── man └── programmer 2 directories, 0 files

优秀的个人博客,低调大师

linux之awk命令

awk是一个非常棒的数据处理工具。相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分成数个“字段”来处理。因此,awk 相当适合处理小型的数据处理。awk通常运行模式是这样的: [root@www ~]# awk '条件类型1{动作1} 条件类型2{动作2} 。。。' filename awk 后面接两个单引号并加上大括号来设置想要对数据进行的处理动作。awk 可以处理后续接的文件,也可以读取来自签个命令的standardoutput。但如前面所说的,awk主要是处理每一行的字段内的数据,而默认的字段的分隔符为空格键或[tab]键。举例来说,我们用 last 可以将登陆者的数据取出来,但我只想要取出账号与登录者的IP,且账号和IP之间以[tab]隔开 [root@www ~]# last -n 5 | awk '{print $1 "\t" $3}' <==可先用last -n 5 查看登录者数据,再进行操作 root 192.168.1.100 root 192.168.1.100 root 192.168.1.100 dmtsai 192.168.1.100 root Fri 上面是 awk 最常使用的动作。通过print 的功能将字段数据列出来!字段的分隔以空格或[tab] 隔开。第5行数据有点奇怪;这是因为数据格式的问题。所以使用awk的时候,请先确认一下你的数据,如果是连续性的数据,请不要有空格或[tab] 在内,否则就会像上面那样,发生误判。 另外,在每一行的每个字段都是有变量名称的,那就是$1,$2等变量名称。以上面的例子来说,root就是$1,因为它是第一列,至于192.168.1.100 是第三列,所以它就是 $3,后面以次类推。还有个变量$0,$0代表一整行数据的意思。 由此,上面5行当中,整个的awk处理流程是: 1.读入第一行,并将第一行数据填入$0,$1,$2等变量中; 2.依据条件类型的限制,判断是否需要进行后面的动作; 3.做完所有动作与条件类型; 4.若还有后续的“行”的数据,则重复上面1~3 的步骤,直到所有的数据都读完为止。 经过这样的步骤,你会晓得,awk 是以行为一次处理的单位,而以字段为最小的处理单位。那么awk 又怎么知道整个数据到底有几行和几列?这就需要 awk 的内置变量的帮忙了 NF: 每一行($0) 拥有的字段总数 NR: 目前awk 所处理的是 “第几行”数据 FS: 目前的分隔符,默认是空格

优秀的个人博客,低调大师

Linux关机&重启命令

基本介绍: shutdown -h now 立刻进行关机 shutdown -h 1 1分钟后关机 shutdown -r now 现在重启计算机 halt 关机,作用和上面一样 reboot 重启 sync 把内存的数据同步到磁盘 注意细节: 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中 7.2 用户登录和注销 7.2.1 基本介绍: 1、登录时尽量少用root账户登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用“su -用户名”命令来切换成系统管理员身份。 2、在提示符下输入logout即可注销用户 7.2.2 使用细节 1、logout注销指令在图形运行级别无效,在运行级别3下有效。

优秀的个人博客,低调大师

Linux 下netstat命令

netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。 如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用netstat查一查为什么会出现这些情况了。 1 命令格式: netstat[-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip] 2 命令功能: netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。 3 命令参数: -a或–all显示所有连线中的Socket。 -A<网络类型>或–<网络类型>列出该网络类型连线中的相关地址。 -c或–continuous持续列出网络状态。 -C或–cache显示路由器配置的快取信息。 -e或–extend显示网络其他相关信息。 -F或–fib显示FIB。 -g或–groups显示多重广播功能群组组员名单。 -h或–help在线帮助。 -i或–interfaces显示网络界面信息表单。 -l或–listening显示监控中的服务器的Socket。 -M或–masquerade显示伪装的网络连线。 -n或–numeric直接使用IP地址,而不通过域名服务器。 -N或–netlink或–symbolic显示网络硬件外围设备的符号连接名称。 -o或–timers显示计时器。 -p或–programs显示正在使用Socket的程序识别码和程序名称。 -r或–route显示RoutingTable。 -s或–statistice显示网络工作信息统计表。 -t或–tcp显示TCP传输协议的连线状况。 -u或–udp显示UDP传输协议的连线状况。 -v或–verbose显示指令执行过程。 -V或–version显示版本信息。 -w或–raw显示RAW传输协议的连线状况。 -x或–unix此参数的效果和指定”-Aunix”参数相同。 –ip或–inet此参数的效果和指定”-Ainet”参数相同。 4 使用实例: ★实例1:无参数使用 命令: netstat 输出: [root@localhost~]#netstat ActiveInternetconnections(w/oservers) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp0268192.168.120.204:ssh10.2.0.68:62420ESTABLISHED udp00192.168.120.204:437110.58.119.119:domainESTABLISHED ActiveUNIXdomainsockets(w/oservers) ProtoRefCntFlagsTypeStateI-NodePath unix2[]DGRAM1491@/org/kernel/udev/udevd unix4[]DGRAM7337/dev/log unix2[]DGRAM708823 unix2[]DGRAM7539 unix3[]STREAMCONNECTED7287 unix3[]STREAMCONNECTED7286 [root@localhost~]# 说明: 从整体上看,netstat的输出结果可以分为两个部分: 一个是ActiveInternetconnections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。 另一个是ActiveUNIXdomainsockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。 Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。 套接口类型: -t:TCP -u:UDP -raw:RAW类型 --unix:UNIX域类型 --ax25:AX25类型 --ipx:ipx类型 --netrom:netrom类型 状态说明: LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了) SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了) ESTABLISHED:代表一个打开的连接 FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认 FIN-WAIT-2:从远程TCP等待连接中断请求 CLOSE-WAIT:等待从本地用户发来的连接中断请求 CLOSING:等待远程TCP对连接中断的确认 LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击) TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认 CLOSED:没有任何连接状态 ★实例2:列出所有端口 命令: netstat-a 输出: 说明: 显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请(LISTENING)的那些连接。 ★实例3:显示当前UDP连接状况 命令: netstat-nu 输出: ★实例4:显示UDP端口号的使用情况 命令: netstat-apu 输出: ★实例5:显示网卡列表 命令: netstat-i 输出: [root@andy~]#netstat-i KernelInterfacetable IfaceMTUMetRX-OKRX-ERRRX-DRPRX-OVRTX-OKTX-ERRTX-DRPTX-OVRFlg eth015000151818887000198928403000BMRU lo164360107235000107235000LRU [root@andy~]# ★实例6:显示组播组的关系 命令: netstat-g 输出: [root@andy~]#netstat-g IPv6/IPv4GroupMemberships InterfaceRefCntGroup ------------------------------------------ lo1all-systems.mcast.net eth01all-systems.mcast.net lo1ff02::1 eth01ff02::1:ffff:9b0c eth01ff02::1 [root@andy~]# ★实例7:显示网络统计信息 命令: netstat-s 输出: 说明: 按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。 ★实例8:显示监听的套接口 命令: netstat-l 输出: [root@localhost~]#netstat-l ActiveInternetconnections(onlyservers) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp00localhost:smux*:*LISTEN tcp00*:svn*:*LISTEN tcp00*:ssh*:*LISTEN udp00localhost:syslog*:* udp00*:snmp*:* ActiveUNIXdomainsockets(onlyservers) ProtoRefCntFlagsTypeStateI-NodePath unix2[ACC]STREAMLISTENING708833/tmp/ssh-yKnDB15725/agent.15725 unix2[ACC]STREAMLISTENING7296/var/run/audispd_events [root@localhost~]# ‍ ★实例9:显示所有已建立的有效连接 命令: netstat-n 输出: [root@localhost~]#netstat-n ActiveInternetconnections(w/oservers) ProtoRecv-QSend-QLocalAddressForeignAddressState tcp0268192.168.120.204:2210.2.0.68:62420ESTABLISHED ActiveUNIXdomainsockets(w/oservers) ProtoRefCntFlagsTypeStateI-NodePath unix2[]DGRAM1491@/org/kernel/udev/udevd unix4[]DGRAM7337/dev/log unix2[]DGRAM708823 unix2[]DGRAM7539 unix3[]STREAMCONNECTED7287 unix3[]STREAMCONNECTED7286 [root@localhost~]# ★实例10:显示关于以太网的统计数据 命令: netstat-e 输出: [root@localhost~]#netstat-e ActiveInternetconnections(w/oservers) ProtoRecv-QSend-QLocalAddressForeignAddressStateUserInode tcp0248192.168.120.204:ssh10.2.0.68:62420ESTABLISHEDroot708795 ActiveUNIXdomainsockets(w/oservers) ProtoRefCntFlagsTypeStateI-NodePath unix2[]DGRAM1491@/org/kernel/udev/udevd unix4[]DGRAM7337/dev/log unix2[]DGRAM708823 unix2[]DGRAM7539 unix3[]STREAMCONNECTED7287 unix3[]STREAMCONNECTED7286 [root@localhost~]# 说明: 用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量) ★实例11:显示关于路由表的信息 命令: netstat-r 输出: [root@localhost~]#netstat-r KernelIProutingtable DestinationGatewayGenmaskFlagsMSSWindowirttIface 192.168.120.0*255.255.255.0U000eth0 192.168.0.0192.168.120.1255.255.0.0UG000eth0 10.0.0.0192.168.120.1255.0.0.0UG000eth0 default192.168.120.2400.0.0.0UG000eth0 [root@localhost~]# ★实例12:列出所有tcp端口 命令: netstat-at 输出: ★实例13:统计机器中网络连接各个状态个数 命令: netstat-a|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}' 输出: [root@localhost~]#netstat-a|awk'/^tcp/{++S[$NF]}END{for(ainS)printa,S[a]}' ESTABLISHED1 LISTEN3 [root@localhost~]# ★实例14:把状态全都取出来后使用uniq-c统计后再进行排序 命令: netstat-nat|awk'{print$6}'|sort|uniq-c 输出: ★实例15:查看连接某服务端口最多的的IP地址 命令: netstat-nat|grep"192.168.120.20:16067"|awk'{print$5}'|awk-F:'{print$4}'|sort|uniq-c|sort-nr|head-20 输出: ★实例16:找出程序运行的端口 命令: netstat-ap|grepssh 输出: ★实例17:在netstat输出中显示PID和进程名称 命令: netstat-pt 输出: 说明: netstat-p可以与其它开关一起使用,就可以添加“PID/进程名称”到netstat输出中,这样debugging的时候可以很方便的发现特定端口运行的程序。 ★实例18:找出运行在指定端口的进程 命令: netstat-anpt|grep':16064' 输出: 说明: 运行在端口16064的进程id为24596,再通过ps命令就可以找到具体的应用程序了。

优秀的个人博客,低调大师

Linux sed替换(转载)

1. sed替换的基本语法为: <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">sed 's/原字符串/替换字符串/'</pre> 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义。 2. 单引号” ‘ ’”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,格式如下: <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 要处理的字符包含单引号 sed "s/原字符串包含'/替换字符串包含'/" </pre> 3. 命令中的三根斜线分隔符可以换成别的符号,有时候替换目录字符串的时候有较多斜线,这个时候换成其它的分割符是较为方便,只需要紧跟s定义即可。 <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 将分隔符换成问号”?”: sed 's?原字符串?替换字符串?'</pre> 4. 可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如: <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 替换所有匹配关键字 sed 's/原字符串/替换字符串/g'</pre> 5. 一些特殊字符的使用 ”^”表示行首 ”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行) [ 复制代码 ](javascript:void(0); "复制代码") <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 注意这里的 " & " 符号,如果没有 “&”,就会直接将匹配到的字符串替换掉 sed 's/^/添加的头部&/g' #在所有行首添加 sed 's/$/&添加的尾部/g' #在所有行末添加 sed '2s/原字符串/替换字符串/g' #替换第2行 sed '$s/原字符串/替换字符串/g' #替换最后一行 sed '2,5s/原字符串/替换字符串/g' #替换2到5行 sed '2,$s/原字符串/替换字符串/g' #替换2到最后一行</pre> [ 复制代码 ](javascript:void(0); "复制代码") 6.批量替换字符串 <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">sed -i "s/查找字段/替换字段/g" grep 查找字段 -rl 路径 sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir</pre> 7. sed处理过的输出是直接输出到屏幕上的,使用参数”i”直接在文件中替换。 <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 替换文件中的所有匹配项 sed -i 's/原字符串/替换字符串/g' filename</pre> 8. 多个替换可以在同一条命令中执行,用分号”;”分隔,其格式为: <pre style="margin: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"># 同时执行两个替换规则 sed 's/^/添加的头部&/g;s/$/&添加的尾部/g' </pre>

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Apache Tomcat

Apache Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse

Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。