• linux命令巧用,随手记


    巧用1

    一句话修改或者给用户设置密码,并且防止历史命令记住设置的密码

    1  echo "qqxde:ioj123"|passwd --stdin Dicky && history -c

    巧用2

    如何查看并杀死僵尸进程?
    在运行ansible的时候,可能由于机器太多,后者一些其他的未知原因,导致出现了僵尸进程,从而导致不能够让进程接着往下面来继续执行
    为此我们需要杀死进程,然后继续让程序进行

    用下面的命令找出僵死进程

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

    命令注解:
      -A 参数列出所有进程
      -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程id),cmd(命令)这四个参数

         -C 用来指定所执行的命令名称,你这里也就是让ps仅仅显示php命令所产生的进程的信息

    因为状态为 z或者Z 的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程
    然后杀死她;
    kill -9  pid

    最近又遇到了个问题,一台服务器上产生了100多少僵死进程,而且每一僵死进程的父进程都不一样,如果用上面的方法,一条一条的杀,那还不得累死我啊。
    那么就应该想一条简单的命令,直接查找僵死进程,然后将父进程杀死~

    ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

    巧用三:

    1 时间与时间戳的转换
    2 [root@iZ940ao463eZ ~]# date -d "2014-09-10" +%s
    3 1410278400
    4 [root@iZ940ao463eZ ~]# date -d @1410278400 '+%Y-%m-%d'
    5 2014-09-10
    6 [root@iZ940ao463eZ ~]#

     巧用四

    在linux下使用python增加补全功能,脚本如下:

     1 #!/usr/bin/env python
     2 # coding: UTF-8
     3 # python tab file
     4 
     5 import sys
     6 import readline
     7 import rlcompleter
     8 import atexit
     9 import os
    10 #tab completion
    11 readline.parse_and_bind('tab: complete')
    12 #history file
    13 histfile = os.path.join(os.environ['HOME'],'.pythonhistory')
    14 try:
    15     readline.read_history_file(histfile)
    16 except IOError:
    17     pass
    18 atexit.register(readline.write_history_file,histfile)
    19 
    20 del os,histfile,readline,rlcompleter

    将上面这段代码插入到python的环境变量,我的路径如下

    1 >>> 
    2 >>> sys.path
    3 ['', '/usr/lib64/python26.zip', '/usr/lib64/python2.6', '/usr/lib64/python2.6/plat-linux2', '/usr/lib64/python2.6/lib-tk', '/usr/lib64/python2.6/lib-old', '/usr/lib64/python2.6/lib-dynload', '/usr/lib64/python2.6/site-packages', '/usr/lib/python2.6/site-packages', '/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info']
    4 >>> 
    View Code

    将脚本考到目录下

     1 cp tab.py /usr/lib64/python2.6/site-packages/ 

    测试:

     1 >>> import tab
     2 >>> import json
     3 >>> json.
     4 json.JSONDecoder(       json.__doc__            json.__new__(           json.__sizeof__(        json.dump(
     5 json.JSONEncoder(       json.__file__           json.__package__        json.__str__(           json.dumps(
     6 json.__all__            json.__format__(        json.__path__           json.__subclasshook__(  json.encoder
     7 json.__author__         json.__getattribute__(  json.__reduce__(        json.__version__        json.load(
     8 json.__class__(         json.__hash__(          json.__reduce_ex__(     json._default_decoder   json.loads(
     9 json.__delattr__(       json.__init__(          json.__repr__(          json._default_encoder   json.scanner
    10 json.__dict__           json.__name__           json.__setattr__(       json.decoder            
    11 >>> json.

    带宽:

    网络服务商声称光纤的速度为“ 3M”,一般的情况下,“3M”实际上就是3000Kbit/s(按千进位计算)这就存在一个换算的问题。
    Byte和bit是不同的。1Byte=8bit.而我们常说的下载速度都指的是Byte/s 因此电信所说的“3M”经过还换算后就成为了(3000/8)KByte/s=375KByte/s这样我们平时下载速度最高就是375KByte/s常常表示375KB/S.
    3M是3Mbps的缩写,M表示10的6次方,3M全部含义是3000000bit/s = 3000K bit/s,364K/s 是364K Bit/s的缩写,1 Bit = 8bit,所以3Mbps=3000K/8 Bit/s=375K/s,

    巧记五

    cat -v install.sh|tr -d "^M" v   去除空格

    巧用六根据inode删除文件

    find ./ -inum 919306 -exec rm -i {} ;

    巧用七

    pip的安装

     1 cat  pip_an.sh 
     2 #!/bin/bash
     3 wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
     4 tar zxvf setuptools-0.6c11.tar.gz
     5 cd setuptools-0.6c11
     6 python setup.py build
     7 python setup.py install
     8 wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2904f92d46aaa33326"
     9 tar -xzvf pip-1.5.4.tar.gz
    10 cd pip-1.5.4
    11 python setup.py install
    View Code

     巧用八

    Linux下文件的特殊权限

    setcap

    详情:

    https://wiki.archlinux.org/index.php/Capabilities_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

    http://kibazen.cn/2016/linux-file-specical-permission/

    知识记录

    linux版本,包版本
    带i386、i486、i586、i686、x86等的一般是32位的,带x64、amd64、x86_64、x86-64等的一般是64位的

    知识补充:

    Linux的/etc/services文件简析

    主要在tcpdump中,解析端口号用的到

    cat  /etc/services|grep  xxx

    /etc/services文件是记录网络服务名和它们对应使用的端口号及协议。文件中的每一行对应一种服务,它由4个字段组成,中间用TAB或空格分隔,分别表示“服务名称”、“使用端口”、“协议名称”以及“别名”。

    如图所示:

    总结:/etc/services文件包含了服务名和端口号之间的映射,很多的系统程序要使用这个文件。一般情况下,不要修改该文件的内容,因为这些设置都是Internet标准的设置。一旦修改,可能会造成系统冲突,使用户无法正常访问资源。Linux系统的端口号的范围为0–65535,不同范围有不同的意义。

    • 0 不使用
    • 1--1023 系统保留,只能由root用户使用
    • 1024---4999 由客户端程序自由分配
    • 5000---65535 由服务器端程序自由分配
  • 相关阅读:
    leetcode 14. 最长公共前缀
    leetcode13. 罗马数字转整数
    leetcode 21.合并两个有序链表
    leetcode14-最长公共前缀
    leetcode13-罗马数字转整数
    leetcode11- 盛最多水的容器
    leetcode9-回文数
    leetcode7- 整数反转
    leetcode 1-两数之和
    文件的上传
  • 原文地址:https://www.cnblogs.com/Dicky-Zhang/p/5907224.html
Copyright © 2020-2023  润新知