zoukankan      html  css  js  c++  java
  • Linux常用命令整理1:yum,rpm,ps,kill,netstat,find,tar,systemctl,strace

    yum:

    列出所有可更新的软件清单命令:yum check-update
    
    更新所有软件命令:yum update
    
    仅安装指定的软件命令:yum install <package_name>
    
    仅更新指定的软件命令:yum update <package_name>
    
    列出所有可安裝的软件清单命令:yum list
    
    删除软件包命令:yum remove <package_name>
    
    查找软件包命令:yum search <keyword>
    
    清除缓存命令:
    yum clean packages: 清除缓存目录下的软件包
    yum clean headers: 清除缓存目录下的 headers
    yum clean oldheaders: 清除缓存目录下旧的 headers
    yum clean
    yum clean all (
    = yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers

    yum makecache

    rpm:

    rpm -ivh package.rpm 安装一个rpm包 (可以是远程的)
    
    rpm -qa | grep httpd 显示所有名称中包含 "httpd" 字样的rpm包 
    
    rpm -e package_name.rpm 删除一个rpm包 #如果删除失败就加上 --nodeps
    
    rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表 
    
    rpm -qf /path/to/some_file 查询某文件是由哪个rpm包安装生成的,返回rpm包名
    
    rpm -qc package_name 查询包安装生成的配置文件
    
    rpm -q --scripts package_name 查询包相关的脚本

    #批量删除
    for i in `rpm -qa|grep erlang`;do rpm -e --nodeps $i; done;

    for i in `find / -name erlang`; do ll $i; done;

    ps:

    ps -efw [|grep]  查看所有进程
    
    ps -aux [|grep]  显示所有包含其他使用者的行程

    kill:

    kill pid 杀死进程 #杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志
    
    kill -9 pid 彻底杀死进程
    
    kill -KILL pid 强制杀死进程

    kill -HUP pid 重跑pid进程

    kill -l 列出所有信号


    首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令: 
    # kill -pid   
    注释:标准的kill命令通常都能达到目的。终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。
    为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。  

    netstat:

    -a (all)显示所有选项,默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服務状态

    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。

    netstat -a | more #  列出所有端口
    netstat -at #列出所有 tcp 端口
    netstat -au #列出所有 udp 端口
    netstat -an #在 netstat 输出中不显示主机,端口和用户名,将会使用数字代替那些名称
    netstat -an|grep :80 #找出运行在指定端口的进程
    
    netstat -l #只显示监听端口
    netstat -lt #只列出所有监听 tcp 端口
    netstat -lu #只列出所有监听 udp 端口
    netstat -lx #只列出所有监听 UNIX 端口
    
    netstat -s #显示所有端口的统计信息 
    netstat -st #显示 TCP  端口的统计信息
    netstat -su #显示 UDP 端口的统计信息
    
    netstat -p #在 netstat 输出中显示 PID 和进程名称
    netstat -ap|grep ssh #找出程序运行的端口
    
    netstat -c #每隔一秒输出网络信息
    
    netstat --verbose #显示系统不支持的地址族
    
    netstat -r #显示核心路由信息
    netstat -rn #显示核心路由信息,显示数字格式,不查询主机名称
     
    netstat -i #显示网络接口列表
    netstat -ie #显示网络接口列表,详细信息
    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}' #查看当前并发连接数

    find:

    参考:https://www.jianshu.com/p/ea8cc2248022

    参考:https://www.cnblogs.com/bpzblog/p/12657340.html

    语法:find [paths] [expression] [actions]
    
    [expression]
    -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
    -amin n : 在过去 n 分钟内被读取过
    -anewer file : 比文件 file 更晚被读取过的文件
    -atime n : 在过去n天内被读取过的文件
    -cmin n : 在过去 n 分钟内被修改过
    -cnewer file :比文件 file 更新的文件
    -ctime n : 在过去n天内被修改过的文件
    -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
    -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
    -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
    -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
    -type c : 文件类型是 c 的文件。
    
    //举例
    find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 
    find / -user user1 搜索属于用户 'user1' 的文件和目录 
    find /home/user1 -name *.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 
    find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 
    find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 
    find / -name *.rpm -exec chmod 755 '{}' ; 搜索以 '.rpm' 结尾的文件并定义其权限 
    find / -xdev -name *.rpm 搜索以 '.rpm' 结尾的文件,忽略光驱、捷盘等可移动设备  
    
    #按文件内容查找
    grep -r "version.app.xinyartech.com"  /data/nginx/conf.d
    grep -r -l "version.app.xinyartech.com"  /data/nginx/conf.d
    find /data/nginx/conf.d  -type f |xargs grep "version.app.xinyartech.com"; 
    
    [action]
    -print:默认的处理动作,显示至屏幕 
    -ls:类似于对查找到的文件执行“ls -l”命令 
    -fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file 
    -delete:删除查找到的文件,慎用! 
    -ok COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认 
    -exec COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令 
    {}: 用于引用查找到的文件名称自身
    
    //举例
    #备份配置文件,添加.orig这个扩展名 
    find -name ".conf" -exec cp {} {}.orig ; 
    
    #提示删除存在时间超过3天以上的joe的临时文件 
    find /tmp -ctime +3 -user joe -ok rm {} ; 
    
    #在主目录中寻找可被其它用户写入的文件 
    find ~ -perm -002 -exec chmod o-w {} ; 
    
    #查找/data下的权限为644,后缀为sh的普通文件,增加执行权限 
    find /data –type f -perm 644 -name "*.sh" –exec chmod 755 {} ;

    tar:

    -c或--create 建立新的备份文件
    -t或--list 列出备份文件的内容
    -x或--extract或--get 从备份文件中还原文件
          特別留意的是, -c, -t, -x 不可同時出現在一串指令列中。
    -z或--gzip或--ungzip 通过gzip指令处理备份文件
    -j  :透過 bzip2 的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.bz2
    -J  :透過 xz    的支援進行壓縮/解壓縮:此時檔名最好為 *.tar.xz
          特別留意, -z, -j, -J 不可以同時出現在一串指令列中
    -v或--verbose 显示指令执行过程
    -f<备份文件>或--file=<备份文件> 指定备份文件
    -C<目的目录>或--directory=<目的目录> 切换到指定的目录
    //xxx.tar.gz
    tar -zxvf xxx.tar.gz [-C destdir]  #解压 xxx.tar.gz [到destdir目录]
    tar -zcvf xxx.tar.gz xxx ...(多个目录)  #压缩成xxx.tar.gz
    tar -ztvf xxx.tar.gz  #查看压缩包xxx.tar.gz内的内容
    
    //xxx.tar.bz2
    tar -jxvf xxx.tar.bz2 [-C destdir]  #解压xxx.tar.bz2  [到destdir目录]
    tar -jcvf xxx.tar.bz2 xxx... (多个目录)  #压缩成xxx.tar.bz2
    tar -jtvf xxx.tar.gz  #查看压缩包xxx.tar.bz2内的内容
    
    //xxx.tar
    tar -xvf xxx.tar [-C destdir]  #解压xxx.tar  [到destdir目录]
    tar -cvf xxx.tar  xxx ... (多个目录) #打包成xxx.tar(即tarfile)
    tar -tvf xxx.tar #查看包xxx.tar内的内容
    
    //xxx.zip
    #一、安装支持ZIP的工具
    yum install -y unzip zip
    
    #二、解压zip文件
    unzip xxx.zip
    
    #三、压缩一个zip文件
    zip xxx.zip xxx... (多个目录) 
    
    

    systemctl:

    1,文件位置:

    /etc/systemd/system/
    /usr/lib/systemd/system

    2,命令

    只显示服务单元的状态
    systemctl --type=service
    
    验证sshd服务当前是否活动
    systemctl is-active sshd
    
    启动,停止和重启sshd服务
    systemctl start sshd.service
    systemctl stop sshd.service
    systemctl restart sshd.service
    
    重新加载配置
    systemctl reload sshd.service
    
    列出所有服务单元
    systemctl list-units --type=service --all
    
    查看服务单元的启用和禁用状态
    systemctl list-unit-files --type=service
    
    列出失败的服务
    systemctl --failed --type=service
    
    列出依赖的单元
    systemctl list-dependencies sshd
    
    验证sshd服务是否开机启动
    systemctl is-enabled sshd
    
    禁用network,使之不能自动启动,但手动可以
    systemctl disable network
    
    启用network
    systemctl enable network
    
    禁用network,使之不能手动或自动启动
    systemctl mask network
    
    启用network
    systemctl unmask network

     strace:

    参考:

    https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html (linux strace命令)

    https://blog.csdn.net/cs729298/article/details/81906375 (强大的strace命令用法详解)

    strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。

    #基本用法:
    strace -o output.txt -T -tt -e trace=all -p 28979
    
    #参数:
    -c 统计每一系统调用的所执行的时间,次数和出错的次数等. 
    -d 输出strace关于标准错误的调试信息. 
    -f 跟踪由fork调用所产生的子进程. 
    -ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号. 
    -F 尝试跟踪vfork调用.在-f时,vfork不被跟踪. 
    -h 输出简要的帮助信息. 
    -i 输出系统调用的入口指针. 
    -q 禁止输出关于脱离的消息. 
    -r 打印出相对时间关于,,每一个系统调用. 
    -t 在输出中的每一行前加上时间信息. 
    -tt 在输出中的每一行前加上时间信息,微秒级. 
    -ttt 微秒级输出,以秒了表示时间. 
    -T 显示每一调用所耗的时间. 
    -v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出. 
    -V 输出strace的版本信息. 
    -x 以十六进制形式输出非标准字符串 
    -xx 所有字符串以十六进制形式输出. 
    -a column 
    设置返回值的输出位置.默认 为40. 
    -e expr 
    指定一个表达式,用来控制如何跟踪.格式如下: 
        [qualifier=][!]value1[,value2]... 
        qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如: 
        -eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none. 
    注意有些shell使用!来执行历史记录里的命令,所以要使用\. 
        -e trace=set 
    只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all. 
        -e trace=file 
    只跟踪有关文件操作的系统调用. 
        -e trace=process 
    只跟踪有关进程控制的系统调用. 
        -e trace=network 
    跟踪与网络有关的所有系统调用. 
        -e strace=signal 
    跟踪所有与系统信号有关的 系统调用 
        -e trace=ipc 
    跟踪所有与进程通讯有关的系统调用 
        -e abbrev=set 
    设定 strace输出的系统调用的结果集.-v 等与 abbrev=none.默认为abbrev=all. 
        -e raw=set 
    将指 定的系统调用的参数以十六进制显示. 
        -e signal=set 
    指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号. 
        -e read=set 
    输出从指定文件中读出 的数据.例如: 
        -e read=3,5 
        -e write=set 
    输出写入到指定文件中的数据. 
    -o filename 
    将strace的输出写入文件filename 
    -p pid 
    跟踪指定的进程pid. 
    -s strsize 
    指定输出的字符串的最大长度.默认为32.文件名一直全部输出. 
    -u username 
    以username 的UID和GID执行被跟踪的命令
  • 相关阅读:
    yii 面包屑
    php == ===
    算法竞赛入门经典 暴力求解法 简单枚举 7.1.4 双基回文数
    算法竞赛入门经典 暴力求解法 简单枚举 7.1.4 双基回文数
    算法竞赛入门经典 暴力求解法 简单枚举 7.1.4 双基回文数
    算法竞赛入门经典 暴力求解法 简单枚举 7.1.4 双基回文数
    折半(对半)搜索算法
    折半(对半)搜索算法
    折半(对半)搜索算法
    折半(对半)搜索算法
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/9929187.html
Copyright © 2011-2022 走看看