进程与程序

1.子程序与父程序

PID是进程的ID,PPID是其父进程的ID

登录bash之后,就是获取了一个名为bash的PID,在这个环境上所执行的其他命令,就是其子程序

  1. common@common-Aspire-4750:~$ ps -l
  2. F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
  3. 0 S 1000 5190 5182 0 80 0 - 2153 wait pts/1 00:00:00 bash
  4. 0 R 1000 5203 5190 0 80 0 - 1606 - pts/1 00:00:00 ps

查看端口使用情况,使用netstat命令。查看已经连接的服务端口(ESTABLISHEDnetstat -a查看所有的服务端口(LISTEN,ESTABLISHED)

  1. netstat -ap

查看8080端口,则可以结合grep命令:

  1. netstat -ap | grep 8080

如查看8888端口,则在终端中输入:

  1. lsof -i:8888

若要停止使用这个端口的程序,使用kill +对应的pid即可

2.作业管理:&、Ctrl-z、jobs、fg、bg、kill

  & 可以直接将命令放到后台执行

  输入命令后,在该命令的最后加上一个&,表示将该命令放到后台,此时会返回一个“作业号”[1],还有一个PID。

  1. common@common-Aspire-4750:~/下载$ tar -cvzf temp.tar.gz temp/ &
  2. [1] 5225
  3. common@common-Aspire-4750:~/下载$ temp/
  4. temp/b.txt
  5. temp/a_copy.txt
  6. temp/a.txt
  7. temp/a.tar.gz
  8. temp/b (复件).txt
  9. 回车
  10. [1]+ 已完成 tar -cvzf temp.tar.gz temp/

在后台中执行的命令,如果有stdout和stderr的时候,它的数据依然是输出到屏幕上的,所以要使用数据流重导向,将输出传至某个文件中

  1. tar -cvzf temp.tar.gz temp/ >> a.txt &

  Ctrl-z 可以将“当前”作业放到后台“暂停

  1. common@common-Aspire-4750:~/下载$ vi a.txt
  2.  
  3. 请按 ENTER 或其它命令继续[1] 已完成 tar -cvzf temp.tar.gz temp/ >> a.txt
  4.  
  5. ctrl+z  #暂停
  6.  
  7. [2]+ 已停止 vi a.txt
  8. common@common-Aspire-4750:~/下载$

  jobs 观察当前后台作业状态

  -l:除了列出作业号之外,同时列出PID

  -r:仅列出正在后台运行(run)的作业

  -s:仅列出正在后台暂停(stop)的作业

  1. common@common-Aspire-4750:~/下载$ jobs -l
  2. [2]+ 5310 停止 vi a.txt  #+-符号,+表示默认的作业,在仅输入fg的时候,+的作业会被拿到前台处理

  fg 将后台作业拿到前台处理

  1. common@common-Aspire-4750:~/下载$ fg %2 # %后面跟的是作业号,默认取出+的作业
  2. vi a.txt

  bg 让作业在后台运行

  1. common@common-Aspire-4750:~/下载$ bg %2
  2. [2]+ vi a.txt &  #多了一个&符号

  kill 管理后台作业

  -l:列出当前kill能够使用的信号(signal),signal表示指示,使用man 7 signal可以知道

  -1:重新读取一次参数的设置文件,(类似reload)

  -2:表示与由键盘输入ctrl-c同样的动作

  -9:立刻强制删除一个作业

  -15:以正常的程序方式终止一项作业

  1. common@common-Aspire-4750:~/下载$ kill -9 %2
  2.  
  3. [2]+ 已停止 vi a.txt
  4. common@common-Aspire-4750:~/下载$ jobs
  5. [2]+ 已杀死 vi a.txt
  1. killall -9 httpd #强制终止所有以httpd启动的进程

  xkill

    杀死一个窗口程序,在QQ后台无法呼出的时候使用

进程管理

  1.进程的观察,ps命令,参数很多,参考man ps

  参数:-A:所有的进程均显示出来,与-e具有同样的作用

     -a:与终端无关的所有进程

     -u:有效用户的相关进程

     x:通常与a参数一起使用,可列出较完整的信息

  输出格式:-l:较长、较详细地显示该PID的信息

       j:作业的格式,带有PID、PPID等信息

       -f:更为完整的输出,进程树格式显示

  1. ps -l #将当前属于自己这次登录的PID与相关信息显示出来,以长格式显示
  1. ps aux #列出当前所有正在内存中的进程
  1. ps -lA #显示出所有的进程,以长格式显示
  1. ps -axjf #以进程树的方式显示进程
  1. common@common-Aspire-4750:~/下载$ ps -aux | grep 'lantern'  #找出和lantern这个服务有关的PID号码,下面是ps命令本身
  2. common 6929 0.0 0.0 6136 2048 pts/1 S+ 13:42 0:00 grep --color=auto lantern

如果某个进程的CMD后面还有<defunct>,就表示该进程是僵尸进程

造成僵尸进程的原因是,该进程应该已执行完毕,或者是因故应该终止了,但是该进程的父进程却无法完整地结束该进程,而造成那个进程一直存在于内存中。

  2.top进程可以持续检测整个系统的进程工作状态

  1. top [-d] [-bnp]

    参数:-d,间隔多少秒输出

       -b,将批处理的结果输出到文件

       -n,与-b搭配,需要进行几次top的输出结果

       -p,指定某些个PID来进行观察

  1. top -d 2 #每隔两秒输出
  1. top -b -d 2 > a.txt #以批处理的方式输出到文件,每隔两秒,必须加上-b不然会乱码
  1. top -d 2 -p6559 #6559是已经存在的PID,每隔两秒查询一次

top主要分为两个画面,上面的画面为整个系统的资源使用状态,有6行:

第一行:显示系统时间,上线人数,整体负载(分别表示1、5、10分钟的平均负载,一般不会超过1)

第二行:显示当前观察的进程数量,注意最后的僵尸进程数量

第三行:显示CPU的总负载,id的数值接近于100,表示系统资源使用的很少

第四、五行:表示当前物理内存与虚拟内存(Men和Swap)的使用情况

第六行:输入命令显示状态的地方

  3.pstree查看进程的关联性

  参数:-A:各进程树之间以ASCII字符来连接

     -p:同时列出每个进程PID

     -u:同时列出每个进程的所属账号名称

  1. pstree -Aup #列出当前系统上所有进程树的关联性,并显示PID和用户

防火墙

  1.查询防火墙状态

  1. sudo service ufw status
  2. sudo ufw status

   2.关闭防火墙

  1. sudo service ufw stop

  3.开启防火墙,运行以上两条命令后,开启了防火墙,并在系统启动时自动开启。关闭所有外部对本机的访问,但本机访问外部正常。

  1. sudo ufw enable
  2. sudo ufw default deny

   4.开启和关闭

  1. #开启和禁用
  2. sudo ufw allow|deny [service]
  3.  
  4. #打开或关闭某个端口,例如:
  5. sudo ufw allow smtp   #允许所有的外部IP访问本机的25/tcp (smtp)端口
  6. sudo ufw allow 22/tcp   #允许所有的外部IP访问本机的22/tcp (ssh)端口
  7. sudo ufw allow 53   #允许外部访问53端口(tcp/udp)
  8. sudo ufw allow from 192.168.1.100   #允许此IP访问所有的本机端口
  9. sudo ufw allow proto udp 192.168.0.1 port 53 to 192.168.0.2 port 53
  10. sudo ufw deny smtp   #禁止外部访问smtp服务
  11. sudo ufw delete allow smtp   #删除上面建立的某条规则
  12.  
  13. #允许某特定 IP
  14. sudo ufw allow from xxx.xxx.xx.xxx
  15.  
  16. #删除 smtp 端口的许可
  17. sudo ufw delete allow smtp

centos清理僵尸进程

  1. ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'
  2. kill -9 XXX

清理buffer/caches

  1. echo 3 > /proc/sys/vm/drop_caches

定制登录motd图案

  1. http://www.kammerl.de/ascii/AsciiSignature.php

在/etc/profile中添加

  1. #Login Info
  2. sh /home/lintong/motd/login_bash_ok.sh

login_bash_ok.sh内容

  1. # * Variables
  2. user=$USER
  3. path=$PWD
  4. home=$HOME
  5.  
  6. # * Check if we're somewhere in /home
  7. if [ ! -d ${home} ];then
  8. return 0
  9. fi
  10.  
  11. # * ASCII head
  12. cat /home/lintong/motd/login_logo.txt
  13. # * Print Output
  14. echo " ::::::::::::::::::::::::::::::::::-STATUS-::::::::::::::::::::::::::::::::::"
  15. reset_terminal=$(tput sgr0)
  16. total_mem=$(top -n 1 -b | grep "KiB\ Mem" | awk '{ print $4/1024 " Mb"}')
  17. echo -e '\E[32m'" Total Memmory :" $reset_terminal ${total_mem}
  18. total_mem_free=$(top -n 1 -b | grep "KiB\ Mem" | awk '{ print $6/1024 " Mb"}')
  19. echo -e '\E[32m'" Total Memmory Free :" $reset_terminal ${total_mem_free}
  20. buff_cache_used=$(top -n 1 -b | grep "KiB\ Mem" | awk '{ print $10/1024 " Mb"}')
  21. echo -e '\E[32m'" Buff Cache Used :" $reset_terminal ${buff_cache_used}

查看机器物理CPU个数

  1. cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

查看单个物理CPU中core的个数(即核数)

  1. cat /proc/cpuinfo| grep "cpu cores"| uniq

查看逻辑CPU的个数

  1. cat /proc/cpuinfo| grep "processor"| wc -l

Linux学习笔记<六>的更多相关文章

  1. Linux 学习笔记

    Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...

  2. linux学习笔记2-linux的常用命令

    第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装linux操作系统,以及一些基本的设置修改. 本篇博客主要介绍linux中的一些常用的终端命令 ======== ...

  3. Linux学习笔记(一)2015.4.13

    研究生由单片机转Linux学习 首先安装VMware虚拟机,用的是VMware 10.0 在VMware 10.0上安装视频上推荐的Red Hat Linux 5 安装后正式进入Linux学习 笔记1 ...

  4. 20160127 linux 学习笔记

    Linux学习笔记第一天 Linux基本介绍 Linux的起源和发展: 简单说linux是一种操作系统,可以安装在包括服务器.个人电脑,乃至PDA.手机.打印机等各类设备中. 起源: Linux起源于 ...

  5. linux —— 学习笔记(汇总)

    笔记目录:一.系统知识 和 基本概念                    二.常用操作                   三.系统管理(内存.设备.服务等管理)                   ...

  6. Linux学习笔记-林耐斯Notes-Linux就该这么学

    Linux学习笔记... 参考的优秀Linux网站: http://www.w3cschool.cn/linux/ http://www.linuxeye.com/ http://linux.vbir ...

  7. Linux~学习笔记目录索引

    回到占占推荐博客索引 本篇文章是对自己学习Linux及在它的环境下部署工具的一个总结,以方便自己查阅,也给他人一个帮助,本文章同时会不断的更新,欢迎大家订阅! 本目录包括的内容会包括linux基础命令 ...

  8. deepin linux学习笔记(四)进不去图形界面怎么办?

    目录 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 更换成lxde桌面 进不去图形界面怎么办? 总结 deepin linux学习笔记(四)进不去图形界面怎么办? 前言 生命不息 ...

  9. deepin linux 学习笔记(二)——文本编辑器

    目录 deepin linux 学习笔记(二)--文本编辑器 前言 nano 小巧的命令行编辑器 通用 编辑 定位 排版 配置 vim 思路独特的超级编辑器 命令模式 插入模式 底线模式(末行模式) ...

  10. deepin linux学习笔记

    目录 deepin linux学习笔记 前言 linux常用命令 ls 显示文件夹内容 cd 切换当前目录 pwd 查看当前工作目录 mkdir 新建文件夹 rm 删除文件或文件夹 mv 移动文件 c ...

随机推荐

  1. C# 在Repeater 的ItemDataBound 如何转换e.Item.DataItem 的类型

    1.使用DataSet和DataTable绑定数据源时,用 DataRowView view = (DataRowView)e.Item.DataItem; 2.DataReader绑定数据源时,用 ...

  2. 软件海贼团 OnePiece (版权所有)

    最近迷上了“海贼王”这部动画片,不仅仅是因为其中的人物个个性格鲜明,剧情跌宕起伏扣人心弦,各种耍宝搞笑,还感觉到这个团队很像理想中的敏捷软件团队. 作为一直带团队的我,感觉“海贼王”这个动画片给了我很 ...

  3. linux下安装 oracle 11g

    oracle 11g安装 一.环境准备 划分区 / 15000M /tmp 4096M /boot 100M Swap 4096M /u01 剩余空间 2.更改主机名,ip地址 3.安装软件包 那么l ...

  4. XML简介与CDATA解释

    简介XML 是一种受到广泛支持的 Internet 标准,用于以一种特殊的方式编码结构化数据.实际上,以 XML 编码的数据可以通过任何编程语言解码,人们甚至可以使用标准的文本编辑器来阅读或编写 XM ...

  5. 【原】为什么选择iPhone5的分辨率作为H5视觉稿尺寸

    [20160105更新:可以用iPhone6分辨率为视觉稿尺寸啦] 又是一年的520网络情人节,深圳这边却下了大雨,这雨只能是单身汉的泪,而对于我来说这一天具有特别的意义,一来怀念父亲,二来对我这种结 ...

  6. HTML 学习笔记 JavaScript(面向对象)

    现在让我们继续跟着大神的脚步前进 学习一下JavaScript中的面向对象的思想,其实作为一个iOS开发者,对面向对象还是比较熟悉的,但是昨晚看了一下Js中的面向对象,妈蛋 一脸萌比啊.还好有大神.让 ...

  7. jquery validate表单验证插件-推荐

    1 表单验证的准备工作 在开启长篇大论之前,首先将表单验证的效果展示给大家.     1.点击表单项,显示帮助提示 2.鼠标离开表单项时,开始校验元素  3.鼠标离开后的正确.错误提示及鼠标移入时的帮 ...

  8. Linux ——————用Secure传文件时直接拖了文件用的是AssIC导致linux那边直乱码

    如下: 解决办法: 直接删除.

  9. SQL Check

    一款实时性能监测工具 SQL Check? 一款实时监测SQL数据库性能.实时排查的问题的免费工具. 可以实时监测20个左右的SQL关键性能指标,每个指标都已图形化动态直播形式展现. 适合DBA.数据 ...

  10. python cookbook 学习系列(一) python中的装饰器

    简介 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓 ...