精华内容
下载资源
问答
  • Linux的进程管理

    2018-08-16 10:42:27
    问题 1. 什么是进程? 进程是指在操作系统中正在运行的一个应用程序 .../proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件。 查...

    问题

    1. 什么是进程?

    进程是指在操作系统中正在运行的一个应用程序
    

    2. 图形的进程查看方式

    gnome-system-monitor
    
    • 可以打开类似于Windows资源管理器的界面,进程管理里面的信息,其查看的是/proc文件里面的信息。
    • /proc目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号,里面包含对应进程相关的多个信息文件。
      这里写图片描述

    查看进程

    ps指令

    • 用于查看进程
    • ps指令显示的是瞬间进程的状态,并不动态连续。
    指令 参数 作用
    ps 查看与当前环境相关的进程
     a 与当前环境相关的所有进程
    -a 终端中运行的进程但不包含当前环境进程信息
    -A 查看系统所有进程
    -e 查看系统所有进程
     x 查看系统中所有含有输出终端的进程
     f 查看进程的从属关系
     u 进程的所有人
     ax 显示所有的进程
    -aux 显示所有包含其他使用者的详细的进程信息
    -o 可以设置显示指定的信息

    ps指令:
    这里写图片描述

    ps -aux:

    这里写图片描述

    ps -aux指令各参数的含义

    参数 含义
    USER 执行进程的用户
    PID pid
    %CPU CPU占用率
    %MEM 物理内存占用率
    VSZ 虚拟内存占用的大小
    RSS 占用固定内存的大小
    TTY 该进程运行的终端,如果与终端机无关则显示?tty开头的为本机登陆者程序
    STAT 该程序目前的状态
    START 行程开始时间
    TIME 执行的时间
    COMMAND 所执行的指令

    进程状态STAT

    • STAT的状态主要有以下几种:
    进程状态 含义
    S 进程状态
    s 此进程为顶级进程
    T 进程暂停
    < 进程优先级高
    N 进程优先级低
    l 进程在内存中有锁定空间
    + 正在运行
    D 不可中断的静止
    R 正在执行中
    Z 已经停止但暂时无法消除
    W 没有足够的内存可分配

    显示指定的信息

    ps -o指令可以 选择显示指定的信息展示:

    ps ax -o comm,nice,%cpu,%mem,pid,user,group,stat
    

    这里写图片描述

    参数 含义
    comm 进程的名字
    nice 进程的优先级
    group

    排序显示信息

     ps ax -o comm,%cpu --sort=%cpu
    

    按cpu使用率升序排序

    这里写图片描述

     ps ax -o comm,%cpu --sort=-%cpu
    

    按cpu使用率倒序排序

    这里写图片描述


    进程的优先级

    查看进程的优先级

    ps -o nice,comm,pid
    

    这里写图片描述

    NI显示的就是进程的优先级

    • -20优先级最高
    • 19优先级最低
    • 0是默认的优先级

    修改进程的优先级

    指令 作用
    renice -n -5 PID 修改进程的优先级为-5
    nice -n -5 命令 & 指定优先级-5开启进程并放到后台

    这里写图片描述

    nice -n -5 vim &:
    这里写图片描述


    进程前后台的调用

    操作 作用
    ctrl+z 将占用终端的进程打入后台并停止运行
    ctrl+c 将占用当前终端的进程结束

    查看被打入后台的进程

    jobs命令
    这里写图片描述

    符号 解释
    + 优先级高
    - 优先级低

    进程的前后台

    • 通过jobs指令中的序号来操作
    指令 作用
    bg jobsnum 将指定进程在后台运行
    fg jobsnum 将指定进程调回前台

    bg jobsnum:
    这里写图片描述

    • 通过该命令可以更改后台程序的优先级

    fg jobsnum
    这里写图片描述

    • 使用之后vim会重新回到前台:
      这里写图片描述

    信号

    常用信号的种类

    信号 作用
    1 进程不停止情况下重新加载配置
    2 清除进程在内存中的数据
    3 清除鼠标在内存中的数据
    9 强行结束进程,不能被阻塞
    15 正常关闭进程
    18 运行停止的进程
    19 暂停进程,不能被阻塞
    20 暂停进程,可以被阻塞

    发起信号的工具

    指令 作用
    kill 信号 pid 通过pid向进程发送信号
    killall 信号 进程名 通过进程名字向一个或多个进程发送信号

    指令演示

    kill -2

    1. 在第一个shell中随便输入一些内容:
      这里写图片描述
    2. 启动第二个shell查看进程信息:
      这里写图片描述
      3.执行kill -2 213清除第一个shell内存中的数据,第一个shell中的变化:
      这里写图片描述

    kill -9

    1. 从第二个shell中执行kill -9 213关闭第一个shell:
      这里写图片描述
    2. 此时第一个shell就关闭了
    展开全文
  • linux常用命令

    2020-10-17 21:34:45
    在ps的结果中过滤出想要查看的进程状态 ps -ef|grep “进程名称” 2.查看端口什么进程占用 1,lsof -i:端口 2,netstat -tunlp|grep 端口 3.更改文件权限 chmod u=rwx,g=rx,o=r a.txt chmod 777 a.txt 4.在...

    1.查看进程

    在ps的结果中过滤出想要查看的进程状态
    ps -ef|grep “进程名称”

    2.查看端口号被什么进程占用

    1,lsof -i:端口号
    2,netstat -tunlp|grep 端口号

    3.更改文件权限

    chmod u=rwx,g=rx,o=r a.txt
    chmod 777 a.txt

    4.在某个路径及其子目录下查找所有包含“hello abcserver”字符串的文件

    find /etc -name “*” | xargs grep “hello abcserver”

    5.在某个路径及其子目录下查找以d开头的的文件

    ls -al /某目录 |grep c*

    展开全文
  • 目标: 整理linux知识,主要包含如下内容: 1、linux重要命令 2、linux重要知识 ...3 如何查看进程的cpu使用情况?使用cpu如何区分是内核还是用户态? 4 如何查看一个进程的IO使用情况? 5 如何查看一个端口...

    目标:
    整理linux知识,主要包含如下内容:
    1、linux重要命令
    2、linux重要知识
    3、shell重要知识

    第一部分 linux重要命令

    文本处理相关:
    1 sed命令有什么作用?基础语法是怎样的?请列举3个常用使用场景。
    1)sed 是一种在线编辑器,它一次处理一行内容。要用来自动编辑一个或多个文件。
    2)
    sed [-nefr] [动作]
    -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端
    -i :直接修改读取的文件内容,而不是输出到终端

    动作说明: [n1[,n2]]function
    n1, n2 :表示选择进行动作的行数

    function:
    a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

    3)
    将 test.txt 的内容列出并且列印行号,同时,请将第 5到最后一行 行删除!
    nl test.txt | sed '5,$d'
    在test.txt第5行后面加上hello world
    sed -i '5a hello world' test.txt
    将test.txt中所有的1.0替换为2.0
    sed -i 's/1.0/2.0/g' test.txt

    2 awk命令有什么作用?使用方法是怎样的?请列举3个常用场景。
    1)awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行处理。
    常用来格式化文本文件中的信息。awk是以文件的一行为处理单位的。
    2)
    awk '{pattern + action}' {filenames}
    解释:
    pattern 表示 AWK 在数据中查找的内容
    action 是在找到匹配内容时所执行的一系列命令

    命令行方式
    awk [-F  field-separator]  'commands'  input-file(s)
    commands是真正awk命令
    [-F域分隔符]是可选的
    input-file(s) 是待处理的文件。
    在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。
    在不指名-F域分隔符的情况下,默认的域分隔符是空格。

    3)
    last -n 5 <==仅取出前五行
    root     pts/1   192.168.1.100  Tue Feb 10 11:21   still logged in
    root     pts/1   192.168.1.100  Tue Feb 10 00:46 - 02:28  (01:41)

    显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割
    cat /etc/passwd |awk  -F ':'  '{print $1"\t"$7}'
    root    /bin/bash
    daemon  /bin/sh

    显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。
    cat /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'

    统计某个文件夹下的文件占用的字节数,如果以M为单位显示:
    ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size/1024/1024,"M"}' 


    3 xargs命令如何使用?基本用法是怎样的?请列举一些常用场景。
    1)xargs 是给命令传递参数的一个过滤器,xargs 默认的命令是 echo,
    这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
    2)
    somecommand |xargs -item  command
    -i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
    3)
    kubectl get pods -n openstack -o wide|grep ceilometer|awk '{print $1}'|xargs -I {} kubectl delete pods -n openstack {} --grace-period=0 --force

    进程相关:
    1 如何查看进程的cpu使用情况?使用的cpu如何区分是内核还是用户态的?
    1) top -p <pid>
    样例:
    Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
    %Cpu(s): 37.7 us,  6.6 sy,  0.0 ni, 54.1 id,  0.0 wa,  0.0 hi,  1.6 si,  0.0 st
    KiB Mem : 11830924 total,   286700 free,  8594652 used,  2949572 buff/cache
    KiB Swap:  6029308 total,  4388356 free,  1640952 used.  2184028 avail Mem 

      PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                           
     5715 root    20   0  113184   1308   1268 S   0.0  0.0   0:00.01 pycharm.sh

    2) 仍然是用top -p <pid>命令
    以上面命令的输出为例:
    %Cpu(s): 37.7 us,  6.6 sy,  0.0 ni, 54.1 id,  0.0 wa,  0.0 hi,  1.6 si,  0.0 st
    us:表示user,即运行用户进程的cpu时间
    sy:表示system,即运行内核进程的cpu时间
    ni:niced,运行已调整优先级的用户进程的cpu时间
    wa: IO wait,等待IO完成的cpu时间
    hi: hardware interrupt,处理硬件中断的cpu时间
    si: software interrupt,处理软件中断的cpu时间
    st: 虚机被hypervisor偷去的cpu时间

    所以us表示运行用户进程的cpu时间,sy表示运行内核进程的cpu时间。
    参考:
    https://www.cnblogs.com/zhoug2020/p/6336453.html

    2 如何查看一个进程的IO使用情况?
    1)使用iotop
    yum install -y iotop
    直接输入iotop 查看当前系统进程的磁盘读写情况
    iotop  -o 直接查看输出比较高的磁盘读写程序。
    针对单个进程进行查看。
    sudo iotop -p $PID -d 1
    样例:
    Total DISK READ :    0.00 B/s | Total DISK WRITE :       0.00 B/s
    Actual DISK READ:    0.00 B/s | Actual DISK WRITE:       0.00 B/s
      TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                
     5715 be/4 root      0.00 B/s    0.00 B/s  0.00 %  0.00 % sh /home/chen/backup/myproject/software/py~arm/pycharm-community-2019.3.1/bin/pycharm.sh


    参考:
    https://jingyan.baidu.com/article/22fe7ced27b0043003617f6b.html
    https://www.cnblogs.com/EasonJim/p/8099956.html


    3 如何查看一个端口号对应的进程并杀掉?如何查看一个端口号对应打开的文件有哪些?
    1) 
    netstat -anpt|grep <port>
    kill -9 <pid>

    2)
    用lsof(list open files)是一个列出当前系统打开文件的工具
    样例如下:
    lsof -p 8
    COMMAND PID    USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
    httpd     8 gnocchi  cwd       DIR             253,77        6    4288530 /var/lib/gnocchi
    httpd     8 gnocchi  rtd       DIR             253,77      267        515 /
    httpd     8 gnocchi  txt       REG             253,77   523568   12646416 /usr/sbin/httpd
    httpd     8 gnocchi  mem       REG             253,77   149040   16831045 /usr/lib64/python2.7/site-packages/.libs_cffi_backend/libffi-72499c49.so.6.0.4
    httpd     8 gnocchi  mem       REG             253,77   725528   31511610 /usr/lib64/python2.7/site-packages/_cffi_backend.so
    解释:
    COMMAND:进程的名称 
    PID:进程标识符 
    USER:进程所有者 
    FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 
    TYPE:文件类型,如DIR、REG等 
    DEVICE:指定磁盘的名称
    SIZE:文件的大小
    NODE:索引节点(文件在磁盘上的标识) 
    NAME:打开文件的确切名称 

    其中FD 列中的文件描述符cwd 值表示应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改。txt 类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序。其次数值表示应用程序的文件描述符,这是打开该文件时返回的一个整数。

    7 如何查看一个进程下面有多少个线程?如何将一个进程设置成守护进程?
    1)
    ps auxwwH | grep ceilometer-collector
    样例输出:
    root     42742  0.0  0.0 112676   984 pts/2    S+   15:04   0:00 grep --color=auto ceilometer-collector
    42405    45644  0.0  0.0 257164 37024 ?        Ssl  13:55   0:01 ceilometer-collector: master process [/usr/bin/ceilometer-collector --config-file /etc/ceilometer/ceilometer.conf]
    42405    45644  0.0  0.0 257164 37024 ?        Ssl  13:55   0:00 ceilometer-collector: master process [/usr/bin/ceilometer-collector --config-file /etc/ceilometer/ceilometer.conf]
    42405    50844  0.0  0.0 943856 50620 ?        Sl   13:55   0:01 ceilometer-collector: CollectorService worker(0)
    42405    50844  0.0  0.0 943856 50620 ?        Sl   13:55   0:00 ceilometer-collector: CollectorService worker(0)
    ......

    解释:
    H代表线程
    auxww。 a选项显示出所有运行进程的内容, 而不仅仅是您的进程。 u选项显示出进程所归属的用户名字以及内存使用, 
    x 选项显示出后台进程。 而 ww 选项表示为 ps(1) 把每个进程的整个命令行全部显示完, 而不是由于命令行过长就把它从屏幕上截去。

    2) 样例如下
    在simple.sh中写入如下内容:
    #!/bin/bash

    install_path=/home/chen/script/
    #安装日志,部署完成后可以查看该日志文件,从而发现部署过程中是否发生错误
    log_file=$install_path"my_log.txt"
    configFile=/home/chen/script/my.conf
    function readConfig()
    {
        content=$(awk -F '=' '/content/{print $2}' $configFile)
        echo $content
    }

    function myprint()
    {
        info=$1
        #info=hello
        while true
        do
            #mytime="$(date "+%Y-%m-%d %H:%M:%S")"
            #result=$mytime $info
            echo $(date "+%Y-%m-%d %H:%M:%S") $info|tee -a $log_file
            sleep 10
        done
    }

    function start()
    {
            content=$(readConfig)
            myprint "$content";
    }

    function getPids()
    {
            pName=$1
            pids=$(ps -ef|grep ${pName}|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
            echo $pids
    }

    function killPids()
    {
            pName=$1
            pids=$(getPids "$pName")
            echo "killPids " $pids
            kill -9 $pids
    }

    # stop means to find the pid related to the program , then execute kill -9
    function stop()
    {
        pName="simple"
        killPids "$pName";    
    }

    function main()
    {
        if [ $# -ne 1 ];then
            echo "parameter number is not 1,for example: ./install_superboard.sh start"
        else
            if [ "$1" == "start" ];then
                start;
            elif [ "$1" == "stop" ];then
                stop;
            elif [ "$1" == "restart" ];then
                stop;
                start;
            else
                echo "the parameter you input is false"
            fi
        fi
    }

    main $1;

    在simple.service文件中写入如下内容,并将该文件移动至: /lib/systemd/system 目录下,表示作为系统服务
    [Unit]
    Description=my service
    After=network.target

    [Service]
    Type=forking
    PIDFile=/run/myservice.pid
    ExecStart=/home/chen/script/simple.sh start
    ExecReload=/home/chen/script/simple.sh restart
    ExecStop=/home/chen/script/simple.sh stop
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target
     
    上述参数的意思是(参考自:http://blog.csdn.net/sageparadise/article/details/50622532):
    [Unit]:服务的说明
    Description:描述服务
    After:描述服务类别
    [Service]服务运行参数的设置
    Type=forking是后台运行的形式
    ExecStart为服务的具体运行命令
    ExecReload为重启命令
    ExecStop为停止命令
    PrivateTmp=True表示给服务分配独立的临时空间
    注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
    [Install]服务安装的相关设置,可设置为多用户 Linux学习,http:// linux.it.NET.cn
    2).保存目录
    以754的权限保存在目录:/lib/systemd/system  
    3).设置开机自启动
    systemctl enable simple.service
    启动服务
    systemctl start simple
    禁用服务
    systemctl disable simple.service


     什么是僵尸进程?如何解决僵尸进程问题。


    参考:
    https://blog.csdn.net/weiyuefei/article/details/78805352

    网络相关:
    6 如何抓包?
    抓包使用tcpdump命令,样例:
    tcpdump -i eno3 -c 20 -nn dst 10.80.2.31
    样例输出信息:
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eno3, link-type EN10MB(Ethernet), capture size 262144 bytes
    17:51:10.51824 IP 10.80.209.13.35870 > 10.80.2.31.25: Flags [S], seq 1586535172, win 29200, options [mss 1460,sackOK, TS val 2874642259 ecr 0,nop,wscale 7], length 0

    解释:
    tcpdump -i eno3 -c 20 -nn dst 10.80.2.31
    1) tcpdump是抓包工具,显示链接到计算机的TCP/IP和其他数据包。
    -i :指定监听的网络接口
    -c :收到指定包的数目后,tcmpdump就会停止
    -nn: 指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示
    dst: 源地址,后跟ip
    eno3是因为控制网络在这个上面。因为eno3和eno5两个端口是bond0,走控制台网络,
    因为是主备,两个端口都抓取,结果只看到eno3有流量,所以是用eno3.


    7 如何查看路由信息?如何添加路由?如何删除路由
    1)执行
    route
    样例输出:
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    default         gateway         0.0.0.0         UG    600    0        0 wlp3s0
    10.8.0.0        10.8.0.57       255.255.0.0     UG    900    0        0 tun0
    10.8.0.1        10.8.0.57       255.255.255.255 UGH   900    0        0 tun0
    10.8.0.57       0.0.0.0         255.255.255.255 UH    0      0        0 tun0
    2)
    ip route add 192.168.1.0/24 via 10.7.0.217
    ip route add 172.70.10.0/24 via 10.9.0.129 dev tun0
    ip route add 192.168.1.170 dev tun2
    可以add后面跟的是直接的地址例如:
    192.168.1.170
    或者网段
    192.168.1.0/24
    via:就是不同的网段
    可以和add后面的ip所在网段不同
    3)
    route del -net 192.168.1.0 netmask  255.255.255.0

    8 iptables如何使用?如何添加端口接收规则?
    1)
    iptables -t nat -A POSTROUTING -s 172.160.10.0/24 -j SNAT --to <跳转机的eth0的ip>
    iptables -t nat -A POSTROUTING -s 172.160.10.0/24 -j SNAT --to 192.168.111.93
    解释:
    1) iptables: 将规则组织为列表,实现详细访问控制
    我给你个guide,你要做个nat路由
    -j SANT:源网络地址转换,SNAT就是重写包的源IP地址
    -A POSTROUTING:
    从内网出去的时候用POSTROUTING进来的时候用PREROUTING
    所以这个应该是控制节点上执行
    固定public 地址(外网接口地址)的最基本内访外SNAT
    源地址发送数据--> {PREROUTING-->路由规则-->POSTROUTING} -->目的地址接收到数据

    iptables-save|grep 5000
    书写了iptables规则以后如果需要保存规则,则可以使用命令:iptables-save

    查看状态:
    iptables -L -n
    下面添加对特定端口开放的方法:
    使用iptables开放如下端口
    /sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT
    保存
    /etc/rc.d/init.d/iptables save
    重启服务
    service iptables restart
    查看需要打开的端口是否生效?
    /etc/init.d/iptables status

    -A INPUT -p tcp -m tcp --dport 8041 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 3000 -j ACCEPT

    vi /etc/sysconfig/iptables  打开配置文件加入如下语句:
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT   重启防火墙,修改完成

    iptables -t nat -A PREROUTING -d 192.168.111.109/32 -p tcp -m tcp --dport 30900 -j DNAT --to-destination 10.20.0.3:30900
    解释:
    通过man iptables查看具体的参数信息
    1) iptables -t nat -A: 
    -t table: 指定命令要操作的匹配包的表。
    nat: 这个表被查询时遇到了产生新的连接的包,由三个内建的链构成:
          PREROUTING(修改到来的包), OUTPUT(修改路由之前本地的包),POSTROUTING(修改准备出去的包)
    -A -append: 添加,在所选择的链末尾添加以条或更多规则。
    -d --destination address/mast: 指定目标地址
    -p -protocol: 规则或者包检查的协议。指定协议可以是tcp, udp, icmp中的一个或者全部。前面加上! 表示相反的规则。
    -m: module_name,使用tcp扩展模块的功能,tcp扩展模块提供了--dport等
    --dport: 目标端口或端口范围指定。
    -j --jump target: (目标跳转)指定规则的目标,也就是说,如果包匹配应当做什么。
    DNAT --to-destination: 目标地址转换。

    2) 例如: 添加8041端口的接收规则
    在每个控制节点执行如下命令
    iptables -I INPUT -p tcp -m tcp --dport 8041 -j ACCEPT
    iptables-save > /etc/sysconfig/iptables
    查看iptables规则:
    vim /etc/sysconfig/iptables
    验证设置正确:
    curl http:<management_id>:8041
    如果ping 通,说明配置正确
    例如:
    curl http://192.168.10.2:8041

    9 如何安装虚拟网卡?
    ip r
    route
    route del default netmask 0.0.0.0
    ip r add default via 192.168.122.1 dev ens8
    ping www.baidu.com

    10 如何关闭防火墙
    systemctl status firewalld
    systemctl stop firewalld
    systemctl disable firewalld

    11 如何查看某个ip和端口是否通?
    通过 telnet 命令确认ip port是否正常连通。
    样例:
    执行:
    telnet smtp.gmail.com 587
    样例输出:
    Trying 108.177.97.109...
    Connected to smtp.gmail.com.
    Escape character is '^]'.


    磁盘相关:
    1 如何查看磁盘分区情况?如何对磁盘分区?
    查看查看磁盘使用情况?如何对磁盘扩容?
    如何对磁盘进行压测?
    1) fdisk -l
    样例输出:
    磁盘 /dev/sda:192.0 GB, 192048095232 字节,375093936 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节
    磁盘标签类型:dos
    磁盘标识符:0x00042bba
       设备 Boot      Start         End      Blocks   Id  System
    /dev/sda1   *        2048     2099199     1048576   83  Linux
    /dev/sda2         2099200   375093247   186497024   8e  Linux LVM

    磁盘 /dev/sdb:128.0 GB, 128035676160 字节,250069680 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节


    磁盘 /dev/mapper/centos-root:53.7 GB, 53687091200 字节,104857600 个扇区
    Units = 扇区 of 1 * 512 = 512 bytes
    扇区大小(逻辑/物理):512 字节 / 512 字节
    I/O 大小(最小/最佳):512 字节 / 512 字节


    2 如何挂载移动硬盘?如何挂载固态硬盘?
    1)挂载移动硬盘
    执行: fdisk -l
    根据容量大小查看移动硬盘对应的磁盘位置,例如是: /dev/sdc
    mount -t ntfs-3g /dev/sdc /mnt/usb
    umount /mnt/usb

    解释:
    mount -t ntfs-3g <NTFS Partition> <Mount Point>
    mount -t 文件系统类型 设备 想要挂载的位置
    ntfs-3g: 是开源软件,可以实现Linux中的NTFS读写支持。

    2)
    CentOS挂载
    查看当前未挂载的硬盘
    fdisk -l
    创建硬盘分区
    fdisk /dev/sdb
    根据提示,依次输入"n","p" "1",两次回车,"wq",分区就开始了,很快就会完成。
    格式化硬盘
    mkfs.ext4 /dev/sdb
    建立挂载目录
    mkdir /data
    挂载硬盘
    mount /dev/sdb /data
    设置开机自动挂载
    vi /etc/fstab
    在vi中输入i进入INERT模式,将光标移至文件结尾处并回车,将下面的内容复制/粘贴,然后按Esc键,输入:x保存并退出
    /dev/sdb    /data    ext4    defaults    0 0
    重启服务器
    shutdown -r now

    其他
    1 请用linux编写一个定时任务。
    用crontab -e进入当前用户的工作表编辑
    crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有

    * 取值范围内的所有数字
    / 每过多少个数字
    - 从X到Z
    ,散列数字

    每隔两天的上午8点到11点的第3和第15分钟执行
    3,15 8-11 */2  *  * myCommand

    /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
    参考:
    https://www.runoob.com/w3cnote/linux-crontab-tasks.html

    2 如何查看占用空间大于100M的文件。
    find / -type f -size +100M -print0 | xargs -0 du -hm | sort -n

    3 如何查看系统负载情况?
    1) uptime
    样例输出如下:
    18:05:42 up 10 days,  8:08, 24 users,  load average: 2.15, 2.05, 1.89

    解释:
    users表示当前正在登录的用户数目。
    最后三个数呢?依次是 1分钟,5分钟,15分钟的平均负载(load average)

    4 如何将一个命令后台运行且不被中断信号所中断?
    nohup可以不受关闭信号所影响, &用于将程序后台运行
    具体执行命令为:
    nohup <command> &

    第二部分 linux重要知识
    1 什么是用户态与内核态?用户态与内核态是如何切换的?为什么要有用户态与内核态?
    1)内核态控制计算机硬件资源例如cpu,内存,I/O资源,提供上层应用运行环境,运行在高级别特权。
    用户态是上层应用程序的活动空间,运行在低特权级别,必须通过系统调用等来获取内核空间资源。
    2)用户态切换到内核态,主要是通过:
    系统调用,异常,外围设备中断。
    系统调用是申请使用操作系统提供的服务;
    异常触发进入到处理异常的内核中;
    外围设备中断是完成用户请求向cpu发出中断信号,暂停执行下一条指令而去
    执行中断对应的处理程序。
    3)限制不同程序访问能力。

    2 什么是惊群效应?如何解决该问题?
    1)惊群效应(thundering herd)是指多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只能有一个进程(线程)获得这个时间的“控制权”,对该事件进行处理,而其他进程(线程)获取“控制权”失败,只能重新进入休眠状态,这种现象和性能浪费就叫做惊群效应。
    2)
    解决方法1: 为了确保只有一个进程(线程)得到资源,需要对资源操作进行加锁保护,加大了系统的开销。目前一些常见的服务器软件有的是通过锁机制解决的。
    用户空间进程间锁实现的原理,起始原理很简单,就是能弄一个让所有进程共享的东西,比如 mmap 的内存,比如文件,然后通过这个东西来控制进程的互斥。

    解决方法2: Linux 解决方案之 Epoll在使用 select、poll、epoll、kqueue 等 IO 复用时,多进程(线程)处理链接更加复杂。在讨论 epoll 的惊群效应时候,需要分为两种情况:epoll_create 在 fork 之前创建epoll_create 在 fork 之后创建epoll_create 在 fork 之前创建与 accept 惊群的原因类似,当有事件发生时,等待同一个文件描述符的所有进程(线程)都将被唤醒,而且解决思路和 accept 一致。为什么需要全部唤醒?因为内核不知道,你是否在等待文件描述符来调用 accept() 函数,还是做其他事情(信号处理,定时事件)。此种情况惊群效应已经被解决。epoll_create 在 fork 之后创建epoll_create 在 fork 之前创建的话,所有进程共享一个 epoll 红黑数。如果我们只需要处理 accept 事件的话,貌似世界一片美好了。但是 epoll 并不是只处理 accept 事件,accept 后续的读写事件都需要处理,还有定时或者信号事件。当连接到来时,我们需要选择一个进程来 accept,这个时候,任何一个 accept 都是可以的。当连接建立以后,后续的读写事件,却与进程有了关联。一个请求与 a 进程建立连接后,后续的读写也应该由 a 进程来做。当读写事件发生时,应该通知哪个进程呢?Epoll 并不知道,因此,事件有可能错误通知另一个进程,这是不对的。所以一般在每个进程(线程)里面会再次创建一个 epoll 事件循环机制,每个进程的读写事件只注册在自己进程的 epoll 种。我们知道 epoll 对惊群效应的修复,是建立在共享在同一个 epoll 结构上的。epoll_create 在 fork 之后执行,每个进程有单独的 epoll 红黑树,等待队列,ready 事件列表。因此,惊群效应再次出现了。有时候唤醒所有进程,有时候唤醒部分进程,可能是因为事件已经被某些进程处理掉了,因此不用在通知另外还未通知到的进程了。

    参考:
    https://www.zhihu.com/question/22756773

    3 锁在linux中是如何确保同一个时间只有一个线程可以访问临界资源的?也就是锁在linux中是如何实现的。
    互斥锁的结构是什么?不能锁住会如何处理?互斥锁的属性是什么?
    1)
    futex(fast Userspace mutexes)的作用。
    内核态和用户态的混合机制。
    还没有futex的时候,内核是如何维护同步与互斥的呢?系统内核维护一个对象,这个对象对所有进程可见,这个对象是用来管理互斥锁并且通知阻塞的进程。如果进程A要进入临界区,先去内核查看这个对象,有没有别的进程在占用这个临界区,出临界区的时候,也去内核查看这个对象,有没有别的进程在等待进入临界区。
    2)互斥锁的结构?
    在futex的基础上用的内存共享变量来实现的。
    3)不能锁住的时候,是如何进入休眠,又如何等待被唤醒的呢?
    进入锁的时候就会区检查那个共享变量,如果不能获取锁,就会通过futex系统调用进入休眠。如果有人释放锁,就会通过futex来唤醒。
    4)互斥锁的属性?
    指定锁的适用范围。


    参考:
    https://www.cnblogs.com/sylz/p/6030201.html

    4 linux中管道是如何实现的?
    管道是一种最基本的IPC机制,作用于有血缘关系的进程之间,完成数据传递。调用pipe系统函数即可创建一个管道。有如下特质:
    1) 其本质是一个伪文件(实为内核缓冲区)
    2) 由两个文件描述符引用,一个表示读端,一个表示写端。
    3) 规定数据从管道的写端流入管道,从读端流出。
    管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。

    管道的局限性:
    1) 数据自己读不能自己写。
    2) 数据一旦被读走,便不在管道中存在,不可反复读取。
    参考:
    https://blog.csdn.net/qq_42914528/article/details/82023408


    第三部分 shell重要知识 
    1 用shell实现循环,重复执行10次,每次间隔10秒来执行某个命令。
    for i in $(seq 1 50); do kubectl delete pod -n openstack $(kubectl get pod -n openstack -o wide | grep neutron-metadata-agent | awk '{print$1}'); sleep 10; done

    2 shell中$相关的含义是什么?
    $?表示上一次命令执行结果,0表示执行成功,1表示执行失败。

    3 shell中当前函数如何使用另一个函数返回的结果。
    在被调用函数中通过echo输出字符串来表示返回值。样例如下:
    function getKey(){
      value=`echo ${1}| cut -d \= -f 1`
      echo ${value}
    }

    temp="connection=mongo"
    key=$(getKey ${temp})


    4 如何调试shell脚本?
    在shell脚本内部上方加上如下内容set -eux或者执行脚本的时候加上-x命令即sh -x xx.sh
    解释:
    x: 显示每一步的执行结果
    e: 脚本发生错误就中只执行
    u: 遇到不存在的变量报错

    参考:
    自己实际工作中相关整理
    https://blog.csdn.net/qingyuanluofeng/article/details/61920230
    https://blog.csdn.net/qingyuanluofeng/article/details/61920174
    https://www.runoob.com/linux/linux-comm-xargs.html
    https://www.cnblogs.com/zhoug2020/p/6336453.html
    https://blog.csdn.net/lgh1117/article/details/80213397
    https://jingyan.baidu.com/article/22fe7ced27b0043003617f6b.html
    https://www.cnblogs.com/EasonJim/p/8099956.html
    https://www.zhihu.com/question/22756773
    https://www.cnblogs.com/sylz/p/6030201.html

    展开全文
  • 1、获取内存泄漏程序的进程号 ps -ef | grep java 2、查看该进程下内存对象类全名中包含bshms的对象个数 jmap -histo 进程号 | grep bshms 3、打开java控制台(命令jconsole),连接到该进程,切到“内存”tab页,点击...

    LINUX内存泄漏解决方法问题排查

    内存泄漏问题排查
    1、获取内存泄漏程序的进程号
    ps -ef | grep java
    2、查看该进程下内存对象类全名中包含bshms的对象个数
    jmap -histo 进程号 | grep bshms
    3、打开java控制台(命令jconsole),连接到该进程,切到“内存”tab页,点击右上角的“执行GC”按钮进行垃圾回收,
    4、重复步骤2,看下对象个数,一直增加不减少,和程序内部逻辑不一样的,就是内存泄漏的。

    结合sort命令,来查看:一个JVM中什么类的实例最多?一个JVM中什么类的占用的合计容量最大?
    Q:统计实例最多的类 前十位有哪些?
    A:jmap -histo pid | sort -n -r -k 2 | head -10
    Q:统计合计容量前十的类有哪些?
    A:jmap -histo pid | sort -n -r -k 3 | head 10

    说明:
    sort命令的部分参数含义解释如下
    -n :使用“”纯数字”进行排序(默认是以文字类型来排序)
    -r : 反向排序
    -k :以那个区间(field)来进行排序的意思
    Alt

    展开全文
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定状态,甚至在有系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...
  • Linux从入门到精通

    2010-04-25 19:58:09
    E.9.4 为什么Linux只能看到我内存一部分? E.9.5 我奔腾或更高档机器有超过64M内存, 但是它似乎很迟钝. 如果我用mem=64M让Linux只用64M内存, 速度似乎加快了. 这是怎么回事? 我该做什么? E.9.6 我有Red ...
  • E.9.4 为什么Linux只能看到我内存一部分? E.9.5 我奔腾或更高档机器有超过64M内存, 但是它似乎很迟钝. 如果我用mem=64M让Linux只用64M内存, 速度似乎加快了. 这是怎么回事? 我该做什么? E.9.6 我有Red ...
  • SSH客户端操作Linux

    2015-01-30 12:11:04
    在你输入“yes”之前呢,最佳选择或许是联系你系统管理员来分析为什么会出现主机验证码改变信息,核对主机验证码是否正确。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 localhost$ ssh -l jsmith remotehost....
  • linux从入门到精通.chm

    2010-05-17 09:11:20
    E.9.4 为什么Linux只能看到我内存一部分? E.9.5 我奔腾或更高档机器有超过64M内存, 但是它似乎很迟钝. 如果我用mem=64M让Linux只用64M内存, 速度似乎加快了. 这是怎么回事? 我该做什么? E.9.6 我有Red ...
  • Linux从入门到精通》

    热门讨论 2008-09-04 17:05:49
    E.9.4 为什么Linux只能看到我内存一部分? E.9.5 我奔腾或更高档机器有超过64M内存, 但是它似乎很迟钝. 如果我用mem=64M让Linux只用64M内存, 速度似乎加快了. 这是怎么回事? 我该做什么? E.9.6 我有Red ...
  • Linux高级bash编程

    2009-07-28 10:26:07
    通过文件 inode 来删除文件 12-5. Logfile: 使用 xargs 来监控系统 log 12-6. 把当前目录下文件拷贝到另一个文件中 12-7. 通过名字Kill进程 12-8. 使用xargs分析单词出现频率 12-9. 使用 expr 12-10. 使用 ...
  • Linux复习题综合练习

    2010-06-25 12:40:15
    14、在Linux系统,默认shell是什么:() A. bash B. ash C. csh D. gnush 15、Pwd命令功能是() A 设置用户口令 B 显示用户口令 C 相当于Windows命令行里输入C D命令 D 相当于在windows命令行里输入...
  • 400电话办理选系统

    2012-05-09 17:03:41
    此功能根据大多数客户选心理,实现可根据地区电话区号检索400电话号码功能,比如:上海客户大多会选择:400 021 ABCD,客户只需要点击“地区名称”为“上海”链接,就可以查询出所有包含“021”号码。...
  • 与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...
  • 的进程中将该进程结束,而后再次运行就没问题了,当然先关闭Qt Creator, 而后再重新打开,这样也能解决问题。 如果把程序改为这样: #include #include "widget.h" #include "mydlg.h" int main(int argc, char ...
  • 每个shell命令的进程号通常是不同的,为了每次调用$$时得到的进程号相同,必须把这4行放在一条命令中,这里用分号把它们连接成一条命令(在书写时为了易读,用\拆成了多行),这样每次.$$便是同一个文件了。...
  • 新版Android开发教程.rar

    千次下载 热门讨论 2010-12-14 15:49:11
    � 具有强大 Linux 社区支持。 Android Android Android Android 不足 � 由于采用了 Java 作为应用开发语言,目前可用传统第三方应用还很少,但由于 Android 是一款完全 开 源移动计算平台,相信第三方...
  • 第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解,但阅读的时候还是感觉有语焉不详的通病,作者本人可能很清楚原委,但写得太简略,以至于读者看来未必清晰。第二,我自己想把这个圈画圆。...
  • 第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解,但阅读的时候还是感觉有语焉不详的通病,作者本人可能很清楚原委,但写得太简略,以至于读者看来未必清晰。第二,我自己想把这个圈画圆。...
  • 尹成Python27天入门到项目实战

    千人学习 2020-12-05 17:04:22
    进程实战多线程回顾多进程拷贝代码多进程拷贝全局变量获取进程编号subprocess执行LinuxShell信号Linux进程小结__name__进程mutiprocessing创建过程join作用进程不可以用全局变量共享数据进程同步进程pipe发送接收...
  • java基础题 很全面

    2009-05-09 09:24:24
    46. 在linux下 怎么查看tomcat的进程? 12 47. 简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。 12 48. XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式? 12 49. 你在项目中用到了xml技术的哪些...
  • 在【后台数据管理】-【阿里云rds配置】页面,添加实例信息,即可实现对阿里云rds的进程管理、慢日志管理 admin后台加固,防暴力破解 patch目录下,名称为django_1.8.17_admin_secure_archer.patch 使用命令 patch...
  • java 面试题 总结

    2009-09-16 08:45:34
    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...
  • 2.4.7 查看注册表中保存表单内容 2.4.8 查看本地VNC密码 2.4.9 查看Firefox浏览器保存密码 2.4.10 简单嗅探密码 2.4.11 Word文档加解密防护 2.4.12 查看Access数据库密码 第二篇 脚本攻防 第3章 ASP脚本漏洞及...
  • java面试题典 java 面试题 经典

    热门讨论 2010-06-18 13:42:36
    54. 内部类可以引用他包含成员吗?有没有什么限制? 17 二、 JAVA高级(servlet 、ejb、 线程、J2EE) 17 1. 说出Servlet生命周期,并说出Servlet和CGI区别 17 2. EJB是基于哪些技术实现?并说出Session...
  • 如果有多引导系统计算机,必须保证是在包含 Windows 驱动器上使用该命令。 Diskpart  创建和删除硬盘驱动器上分区。diskpart 命令仅在使用故障恢复控制台时才可用。  diskpart [ /add |/delete] [device_...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

linux查看包含什么的进程号

linux 订阅