zoukankan      html  css  js  c++  java
  • Linux常用命令及场景

    Linux常用命令查询

    http://linux.51yip.com/

    *$为可选命令

    通用

    系统管理员sudo

    $ sudo command
    

    文件管理

    展示文件ll&du

    # 显示文件详情信息(非文件夹),~/.bash_profile添加LL命令:alias ll='ls -alhF'
    $ ll file
    # 显示各文件(文件夹)大小(磁盘空间)
    $ du -sh *
    

    创建文件touch

    $ touch fileName.txt
    

    解压缩tar

    # 解压以gzip压缩的文件到指定目录下
    $ tar -zxvf pkg.tar.gz -C /path
    # 以gzip压缩指定目录下的指定文件
    $ tar -zcvf pkg.tar.gz /path/file.txt
    

    其他文件格式的解压缩:https://blog.csdn.net/kingschan/article/details/19033637

    分页展示|more

    # 空白键(space)往下一页显示,按 b 键就会往回(back)一页显示
    $ command |more 
    # 每页显示n行
    $ command |more -n
    # 从第n行开始展示
    $ command |more +n
    

    常用文件查看操作

    $ tail -n 100 filename #查看前100行
    $ tail -f #tai
    $ head -n 100 filename #查看后100行
    $ sed -n ‘5,10p’ filename #查看文件的第5行到第10行
    $ wc -l filename #查看文件里有多少行
    $ cat filename | grep "xxxx" -C 50 #显示上下50行
    

    搜索grep

    $ grep "str" filename #习惯搜索的字符串加上双引号
    # grep "$a" file  #引用变量a,查找变量a的值
    # grep '$a' file  #查找“$a”字符串
    $ grep -r "str" * #在当前目录及其子目录下搜索,-r和*配合使用
    $ grep -i "str" filename #不区分大小写
    $ grep -n "str" filename #显示行数
    $ grep -c "str" filename #统计出现的次数
    $ grep -v "str" filename #显示不匹配的行
    $ grep -e "reg" filename #正则匹配
    

    查找文件find

    $ find / -name "*jdk*" #根目录下查找文件名中有jdk的文件
    $ find . -name "*.in" #从当前目录开始查找所有扩展名为 .in 的文本文件 
    

    查找环境变量中的文件which

    $ which -a jdk
    

    包管理

    yum(Redhat/Centos/Fedora)

    # 基于rpm包管理,从指定的服务器自动下载rpm包并且安装,自动处理依赖性关系,一次安装所有依赖的软件包
    # 安装rpm包的命令是“rpm -参数” 
    # 安装
    $ yum install pkgName
    # 更新源
    $ yum update pkgName
    $ yum upgrade pkgName
    # 显示所有已经安装和可以安装的程序包
    $ yum list 
    $ yum list pkgName
    # 显示安装包信息
    $ yum info pkgName
    $ yum remove pkgName
    $ yum search pkgName
    

    换源:https://blog.csdn.net/sinat_33384251/article/details/91404617

    apt-get(Debian/Ubuntu)

    # 基于deb包管理,自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统
    # 安装deb包的命令是“dpkg -参数”
    # 移除的同时清除配置
    $ apt-get purge pkgName
    # 下载软件包的源码
    $ apt-get source pkgName
    # 列出已安装的所有软件包
    $ dpkg -l
    $ apt-cache search pkgName
    $ apt-cache show pkgName
    

    换源:https://www.cnblogs.com/bigcola/p/13378638.html

    brew(MacOS)

    下载homebrew:https://www.cnblogs.com/bigcola/p/13378638.html

    tar(SourceCodePkg)

    tar、rpm、deb:

    https://blog.csdn.net/liu865033503/article/details/86014773

    https://blog.csdn.net/bandaoyu/article/details/83312230

    $ tar -zxvf pkg.tar.gz -C /path
    $ cd /path/pkg 
    # 指定软件安装目录
    *$ ./configure -prefix=/path
    # 编译
    $ make
    # 安装
    $ make install
    # 删除安装时产生的临时文件 
    $ make clean
    # 卸载
    *$ make uninstall
    

    Shell

    文件路径

    Shell通配符(匹配文件名)

    常用于find、ls、cp 、mv

    Shell正则(匹配字符串)

    常用于vi,grep,awk,sed

    后台执行命令&

    # 后面的命令在该行命令执行完成并返回前就能得到执行,不加为阻塞式执行
    $ command &
    

    连接多个命令&&

    $ make && make install #前一个命令执行成功(返回true),执行后一个命令
    

    执行文件命令source&.&./xx.sh&sh

    https://www.maixj.net/ict/linux-source-18000

    $ sh -c 'command string' #sudo sh -c 'command string'可以让command string所有命令都有sudo权限
    

    输出到文件>

    追加到文件>>

    查看命令参数详情man

    $ man top
    

    查看磁盘空间df

    $ df -h
    

    查看当前系统信息uname

    $ uname -a
    

    查看当前目录绝对路径pwd

    $ pwd
    

    传递命令参数|xargs

    为什么有xargs: http://www.ruanyifeng.com/blog/2019/08/xargs-tutorial.html

    使用:http://linux.51yip.com/search/xargs

    $ ls |grep .php |xargs -i mv {} {}.bak    #将当前目录下php文件,改名字
    

    常用

    抓包tcpflow

    $ sudo yum install tcpflow
    # 跟踪当前机器上的流量,keyInfo可以是某个接口名
    $ sudo tcpflow -cp | grep keyInfo
    # 监听eth0端口上的流量
    *$ sudo tcpflow -cp -i eth0
    

    参考:http://blog.chinaunix.net/uid-25311424-id-4432769.html

    获取网络数据curl

    # url为下载文件时进行内容展示,-v展示完整http通信过程
    $ curl -v "url" | more
    

    参考:https://www.cnblogs.com/guixiaoming/p/8507268.html

    域名解析dig

    $ dig www.isc.org
    

    参考:https://www.jb51.net/article/154701.htm

    远端登入telnet

    $ telnet 127.0.0.1 12201
    

    参考:https://www.runoob.com/linux/linux-comm-telnet.html

    远端登录&文件传输ssh/scp

    $ ssh tianhong@10.130.147.226
    $ scp username@ip:/path/filename /localPath # 下载服务器文件到本地
    $ scp /localPath/file username@ip:/path/ # 上传文件到服务器
    

    查看本机ip地址ifconfig

    $ ifconfig | grep "inet " | grep -v 127.0.0.1
    

    查看主机名hostname

    $ hostname
    

    修改host文件

    $ sudo vi /etc/hosts
    

    查看端口占用lsof/netstat

    $ lsof -i:port
    $ netstat -an | grep port
    

    进程详情

    ps aux

    $ ps aux | grep keyInfo
    

    R(运行)//进程正在运行或在运行队列中等待。
    S(中断)//进程处于休眠中,当某个条件形成后或者接收到信号时,则脱离该状态。
    D(不可中断)//无法中断的休眠状态,进程不响应系统异步信号,即便用kill命令也不能将其中断。(通常IO进程)
    Z(僵死)//进程已经终止,但进程描述符依然存在, 直到父进程调用wait4()系统函数后将进程释放。
    T(停止)//进程收到停止信号后停止运行,停止或被追踪。
    < //优先级高的进程
    N //优先级较低的进程
    L //有些页被锁进内存
    s //进程的领导者(在它之下有子进程)
    l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads)
    + //位于后台的进程组;

    top

    $ top
    

    跟踪进程的系统调用strace

    $ strace -o output.txt -T -tt -e trace=all -p 28979 # 跟踪28979进程的所有系统调用(-e trace=all),并统计系统调用的花费时间,以及开始时间(并以可视化的时分秒格式显示),最后将记录结果存在output.txt文件里面
    $ strace -f -e execve myserver # 只关注execve,-f选项告诉strace同时跟踪fork和vfork出来的进程,myserver是要启动和调试的程序
    

    进程内线程详情

    top -Hp pid

    $ top -Hp pid #-H是thread model,-p指定进程pid,具体机器环境可用man top查看参数
    

    各线程运行时间

    $ ps -eLo pid,lwp,pcpu | grep pid
    

    线程堆栈快照pstack

    $ pstack pid 
    

    pstack原理:https://nanxiao.me/linux-pstack/

    pstack+gdb调试死锁:https://www.cnblogs.com/gqtcgq/p/7530384.html

    JDK工具

    javap分析class文件

    javap -verbose TestClass

    JDK工具: https://zhuanlan.zhihu.com/p/63102801

    性能分析工具:VisualVM(推荐)、jprofiler

    VisualVM:https://blog.csdn.net/qq_35246620/article/details/106817964 (jdk的bin目录下自带)

    IDEA也有VisualVM的插件

    jps

    jmap

  • 相关阅读:
    个人总结21
    个人总结08
    个人总结07
    构建之法读后感01
    学习进度表 03
    四则运算3
    求最大值
    学习进度表02
    四则运算 2
    学习进度表01
  • 原文地址:https://www.cnblogs.com/Red-Revolution/p/14814798.html
Copyright © 2011-2022 走看看