zoukankan      html  css  js  c++  java
  • shell 练习

    1、 用shell实现传入进程pid, 查看对应进程/proc下CPU、内存指标

    #!/bin/bash
    read -p "Input PID Value: " pid
    pid_exist=`ps aux|awk '{print $2}'|grep -w $pid`
    if [ ! $pid_exist  ];then
            echo "$pid is not exist!!"
    else
            echo "Memory Usage :"
            cat /proc/$pid/status | grep ^Vm
            echo "Cpu Usage : "
            echo "PID    LWP %CPU :"
            ps  -eLo pid,lwp,pcpu | grep $pid
    fi
    
    

    2、 编写Nginx的systemd配置文件, 实现nginx进程开机启动

    #安装nginx
    yum install nginx
    
    #编写脚本
    vim /etc/systemd/system/nginx.service
    #描述相关
    [Unit]
    Description=nginx
    After=network.target
    
    #脚本
    [Service]
    Type=forking
    ExecStart=/usr/sbin/nginx
    ExecReload=/usr/sbin/nginx reload
    ExecStop=/usr/sbin/nginx quit
    PrivateTmp=true
    
    #依赖性
    [Install]
    WantedBy=multi-user.target
    
    #启动该脚本
    systemctl enable nginx.service
    systemctl start nginx.service
    

    3、 用awk实现查看TCP的连接状态

    netstat -ant | awk '/^tcp/{++state[$NF]} END {for(key in state){print key,state[key]}}'
    

    4、 说明对称、非对称加密算法的区别, 并举例

    对称加密: 使用同一个密钥来对数据进行加密解密,常见的有DES,AES算法

    优点:
    执行效率高,速度快,适合加密大量的数据。

    缺点:
    密钥过多 (总不能一共就用一个密钥来进行加密吧)
    密钥分发困难,传输过程不安全
    无法确定数据来源(key不存在来源验证功能)

    非对称加密:
    非对称加密分为公钥与私钥,且必须是成对出现的。公钥与私钥不同机器应当都是不同的。key1 != key 2。常见的算法类型有SA,DSA
    公钥:公开给所有人使用,用于解密数据; public key
    私钥:自己留存,必须保证其私密性,用于加密数据;secret key
    用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

    优点:
    带有数字签名功能,可以让接收方确认发送方的身份。因为私钥加密的数据,只有对应的公钥才能进行解密。
    对称密钥交换方便安全,发送方用对方的公钥加密一个对称密钥后发送给对方即可。
    适合加密较小的数据

    缺点:
    密钥过长,加密解密的效率相对对称加密低很多。

    5、 用shell实现修改/etc/sysctl.conf文件中的参数并生效

    #!/bin/bash
    while true
    do
            read -p "you can input some sysctl settings,It will take effect immediately :" settings
            format=$(echo $settings | grep -o "=" |wc -l )
            if [ $format -eq "1" ];then
                    if [[ "$settings" =~  .+=.+ ]];then
                            setname=$(echo $settings | cut -d"=" -f1 )
                            exists=`cat /etc/sysctl.conf | grep $setname `
                            if [ "$exists" == "" ];then
                                    cat exists >> /etc/sysctl.conf
                                    sysctl -p
                                    echo "增加配置成功"
                            else
                                    sed -i -r "s@$exists@$settings@g" /etc/sysctl.conf
                                    sysctl -p
                                    echo "修改配置成功"
                            fi
                    else
                            echo "输入格式错误!";
                    fi
            else
                    echo "输入格式错误!";
            fi
    done
    
    
    
    
  • 相关阅读:
    获取指定包下所有自定义注解
    Java中的24种设计模式与7大原则
    学习 Spring Boot:(二十九)Spring Boot Junit 单元测试
    学习Spring Boot:(二十八)Spring Security 权限认证
    学习Spring Boot:(二十七)Spring Boot 2.0 中使用 Actuator
    学习Spring Boot:(二十六)使用 RabbitMQ 消息队列
    学习Spring Boot:(二十五)使用 Redis 实现数据缓存
    学习Spring Boot:(二十四)多数据源配置与使用
    学习Spring Boot:(二十三)Spring Boot 中使用 Docker
    学习Spring Boot:(二十二)使用 AOP
  • 原文地址:https://www.cnblogs.com/ddz-linux/p/10561203.html
Copyright © 2011-2022 走看看