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执行被跟踪的命令
  • 相关阅读:
    浙大数据结构课后习题 练习二 7-2 Reversing Linked List (25 分)
    浙大数据结构课后习题 练习二 7-2 一元多项式的乘法与加法运算 (20 分)
    浙大数据结构课后习题 练习一 7-1 Maximum Subsequence Sum (25 分)
    浙大数据结构课后习题 练习一 7-1 最大子列和问题 (20 分)
    PAT Basic 1019 数字黑洞 (20 分)
    PAT Basic 1017 A除以B (20 分)
    PAT Basic 1013 数素数 (20 分)
    PAT Basic 1007 素数对猜想 (20 分)
    PAT Basic 1003 我要通过! (20 分)
    自动化运维——HelloWorld(一)
  • 原文地址:https://www.cnblogs.com/tkzc2013/p/9929187.html
Copyright © 2011-2022 走看看