zoukankan      html  css  js  c++  java
  • 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 由服务器端程序自由分配
  • 相关阅读:
    (Java) LeetCode 44. Wildcard Matching —— 通配符匹配
    (Java) LeetCode 30. Substring with Concatenation of All Words —— 与所有单词相关联的字串
    (Java) LeetCode 515. Find Largest Value in Each Tree Row —— 在每个树行中找最大值
    (Java) LeetCode 433. Minimum Genetic Mutation —— 最小基因变化
    (Java) LeetCode 413. Arithmetic Slices —— 等差数列划分
    (Java) LeetCode 289. Game of Life —— 生命游戏
    (Java) LeetCode 337. House Robber III —— 打家劫舍 III
    (Java) LeetCode 213. House Robber II —— 打家劫舍 II
    (Java) LeetCode 198. House Robber —— 打家劫舍
    (Java) LeetCode 152. Maximum Product Subarray —— 乘积最大子序列
  • 原文地址:https://www.cnblogs.com/Dicky-Zhang/p/5907224.html
Copyright © 2011-2022 走看看