进程与程序

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. MBProgressHUD 显示后,为何不能点击屏幕其他地方

    解决办法: hud.userInteractionEnabled= NO;  就是这么简单粗暴!这个问题 我一定要发到首页候选区! /********************************* ...

  2. H5 表格标签的其它标签

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. maven 打包含有第三方依赖的 jar 包

    maven 打包含有第三方依赖的 jar 包:mvn assembly:assembly

  4. 从爬取湖北某高校hub教务系统课表浅谈Java信息抓取的实现 —— import java.*;

    原创文章与源码,如果转载请注明来源. 开发环境:Myeclipse,依赖包:apache-httpclient . Jsoup.base64 一.概述 整个系统用Java开发.我们现在要做的是类似于超 ...

  5. DependencyResolver.Current

    描述: 获取依赖关系解析程序的实现. 命名空间: System.Web.Mvc 程序集: System.Web.Mvc(在 System.Web.Mvc.dll 中) 用例: IRecLockServ ...

  6. C#语言学习记录

    1.&& || ! 与或非-逻辑运算符,&&的优先级大于||.

  7. MySQL 数据库的备份与恢复

    一.MySQL 常见的备份方式 1. 直接拷贝数据库文件(物理拷贝) 2. 使用 mysqldump 工具备份 3. 使用 mysqlhotcopy 工具备份 4. 使用 mysql 的主从同步复制, ...

  8. [转]Writing Custom Middleware in ASP.NET Core 1.0

    本文转自:https://www.exceptionnotfound.net/writing-custom-middleware-in-asp-net-core-1-0/ One of the new ...

  9. plain framework 商业版 开发总结2 项目管理器

    任何事情都有三个阶段,分析.制作.质检的过程.在程序中就分为设计.编码.调试(测试)三个阶段,其中设计最为重要,设计的不好会导致编码和调试重复,甚至最后又回到了设计的过程.为了不会重复返工,所以设计的 ...

  10. es-redis

    列出一些redis命令: 免得我不是dba,每次用都得翻看文档,很蛋疼.于是写了个连接脚本 [root@elk-redis-test105 ts]# ls conn-redis.sh [root@el ...