进程与程序

1.子程序与父程序

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

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

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

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

netstat -ap

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

netstat -ap | grep 8080

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

lsof -i:8888

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

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

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

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

common@common-Aspire-4750:~/下载$ tar -cvzf temp.tar.gz temp/ &
[1] 5225
common@common-Aspire-4750:~/下载$ temp/
temp/b.txt
temp/a_copy.txt
temp/a.txt
temp/a.tar.gz
temp/b (复件).txt
回车
[1]+ 已完成 tar -cvzf temp.tar.gz temp/

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

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

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

common@common-Aspire-4750:~/下载$ vi a.txt

请按 ENTER 或其它命令继续[1]   已完成               tar -cvzf temp.tar.gz temp/ >> a.txt

按ctrl+z  #暂停

[2]+  已停止               vi a.txt
common@common-Aspire-4750:~/下载$

  jobs 观察当前后台作业状态

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

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

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

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

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

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

  bg 让作业在后台运行

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

  kill 管理后台作业

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

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

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

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

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

common@common-Aspire-4750:~/下载$ kill -9 %2

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

  xkill

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

进程管理

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

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

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

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

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

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

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

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

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

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

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

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

top [-d] [-bnp]

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

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

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

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

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

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

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

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

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

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

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

  3.pstree查看进程的关联性

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

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

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

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

防火墙

  1.查询防火墙状态

sudo service ufw status
sudo ufw status

   2.关闭防火墙

sudo service ufw stop

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

sudo ufw enable
sudo ufw default deny

   4.开启和关闭

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

centos清理僵尸进程

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

清理buffer/caches

echo 3 > /proc/sys/vm/drop_caches

定制登录motd图案

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

在/etc/profile中添加

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

login_bash_ok.sh内容

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

查看机器物理CPU个数

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

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

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

查看逻辑CPU的个数

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. yii2分页扩展之实现跳转到具体某页

    作者:白狼 出处:http://www.manks.top/yii2_linkpager_widget.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文 ...

  2. 父容器利用opacity设置透明后,子元素跟着变透明的解决方案

    背景半透明,子元素不透明的效果经常需要用到.通常对父容器使用opacity属性时,子元素也跟着变透明,所以不妨设置父容器的 background-color:rgba(r,g,b,x); 其中x取值从 ...

  3. 最新官方WIN10系统32位,64位系统ghost版下载

    系统来自:系统妈 随着Windows 10Build 10074 Insider Preview版发布,有理由相信,Win10离最终RTM阶段已经不远了.看来稍早前传闻的合作伙伴透露微软将在7月底正式 ...

  4. django 一些相关问题

    这两天在处理django项目时碰到一些问题 1.ur路径设置要忽略大小写,查找了很多资料,都没有发现相关的介绍,最后在谷歌上找到一个解决方案,https://groups.google.com/for ...

  5. JS中typeof与instanceof的区别

    JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: Typeof typeof 是一个一元运算,放在一个运算数之前 ...

  6. ESLint规则配置说明

    "no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 & ...

  7. Entity Framework关于SQL注入安全问题

    1.EF生成的sql语句,用 parameter 进行传值,所以不会有sql注入问题 2.EF下有涉及外部输入参数传值的,禁止使用EF直接执行sql命令方式,使用实体 SQL   参考: https: ...

  8. GO语言总结(3)——数组和切片

    上篇博文简单介绍了一下Go语言的基本类型——GO语言总结(2)——基本类型,本篇博文开始介绍Go语言的数组和切片. 一.数组 与其他大多数语言类似,Go语言的数组也是一个元素类型相同的定长的序列. ( ...

  9. [LeetCode] Assign Cookies 分点心

    Assume you are an awesome parent and want to give your children some cookies. But, you should give e ...

  10. [LeetCode] Third Maximum Number 第三大的数

    Given a non-empty array of integers, return the third maximum number in this array. If it does not e ...