zoukankan      html  css  js  c++  java
  • Linux学习笔记<六>

    进程与程序

    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
    

     

  • 相关阅读:
    在线jq库
    解决python3.6的UnicodeEncodeError: 'gbk' codec can't encode character 'xbb' in position 28613: illegal multibyte sequence
    PHP后台支付的开发:微信支付和支付宝支付
    PHP操控Excel视频教程
    微信h5静默、非静默授权获取用户openId的方法和步骤
    OAuth2.0微信网页授权登录
    微信第三方登录 -- (PC端+移动端)
    web字体规范
    移动端字体设置
    在 Web 内容中使用系统字体
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/6238915.html
Copyright © 2011-2022 走看看