我们一起来读书吧 关注:159贴子:3,358
  • 10回复贴,共1

Linux工具快速教程3

只看楼主收藏回复



IP属地:北京1楼2024-12-05 15:58回复
    第三章 文本处理
    常用文本处理命令
    1. cat:查看文件内容并连接文件
    作用:用于查看一个或多个文件的内容,并能将多个文件合并输出。
    示例:
    cat file1.txt
    cat file1.txt file2.txt > combined.txt # 将多个文件合并输出
    常用选项:
    -n:为输出的每一行编号。
    -b:为非空行编号。
    2. echo:输出文本或变量
    作用:用于在终端输出文本或变量的值。
    示例:
    echo "Hello, World!" # 输出文本
    echo $HOME # 输出环境变量
    常用选项:
    -n:不输出末尾的换行符。
    3. grep:文本搜索工具
    作用:在文件中搜索符合模式的文本行,支持正则表达式。
    示例:
    grep "pattern" file.txt # 查找文件中包含 "pattern" 的行
    grep -r "pattern" /path/to/dir # 递归查找目录中的文件
    常用选项:
    -i:忽略大小写。
    -v:显示不匹配的行。
    -r:递归查找。
    4. sed:流编辑器
    作用:用于文本的替换、删除、插入等编辑操作,适合处理流式文本。
    示例:
    sed 's/old/new/g' file.txt # 将文件中的 "old" 替换为 "new"
    常用选项:
    -i:直接修改文件。
    -e:表示接下来是编辑命令。
    5. awk:强大的文本处理工具
    作用:用于按列处理和分析文本文件,支持复杂的模式匹配和处理。
    示例:
    awk '{print $1, $2}' file.txt # 打印每行的第一个和第二个字段
    常用选项:
    -F:指定字段分隔符。
    -v:在命令行中定义变量。
    6. cut:按列切割文本
    作用:用于从每行中提取特定的字段或字符。
    示例:
    cut -d "," -f 1,3 file.csv # 从 CSV 文件中提取第1和第3列
    常用选项:
    -d:指定分隔符。
    -f:指定要提取的字段。
    7. sort:排序文本
    作用:对文件中的文本行进行排序。
    示例:
    sort file.txt # 按字母顺序排序
    常用选项:
    -n:按数字排序。
    -r:逆序排序。
    8. uniq:去重
    作用:用于去除文件中重复的行,通常与 sort 配合使用。
    示例:
    sort file.txt | uniq # 去除重复行
    常用选项:
    -c:统计每行出现的次数。
    -d:只显示重复的行。
    9. tee:同时输出到文件和标准输出
    作用:将命令的输出同时显示在终端和写入文件。
    示例:
    echo "Hello, World!" | tee file.txt # 输出并保存到文件
    常用选项:
    -a:追加到文件,而不是覆盖文件。
    10. tr:字符替换
    作用:用于转换或删除字符。
    示例:
    echo "hello" | tr 'a-z' 'A-Z' # 转换为大写
    常用选项:
    -d:删除指定字符。
    -s:压缩重复字符。
    11. xargs:将标准输入转化为命令行参数
    作用:将标准输入的数据转化为命令行参数,常用于与 find 命令配合使用。
    示例:
    find /path -name "*.txt" | xargs rm # 删除所有 .txt 文件
    文本处理命令的组合使用
    许多文本处理命令可以组合使用,通过管道符 | 将一个命令的输出传递给下一个命令。常见的组合示例如下:
    使用 grep 查找匹配文本:
    grep "pattern" file.txt | sort | uniq
    使用 awk 按列处理数据:
    awk '{print $1, $3}' file.txt | sort | uniq -c


    IP属地:北京3楼2024-12-05 16:04
    回复
      2026-04-24 20:32:00
      广告
      不感兴趣
      开通SVIP免广告
      第四章
      查看磁盘空间 df -h
      查看目录大小 du -sh
      打包 tar -cvf
      解包 tar -xvf
      压缩 gzip
      解压缩 gunzip bzip
      第五章
      2. 常用的进程管理工具
      文档详细介绍了几个常见的进程管理工具和它们的用法,我认为其中一些工具的用法特别有启发性:
      2.1 ps:查看进程信息
      ps 命令是 Linux 中最常用的查看进程状态的工具。通过不同的选项,可以查看指定进程的详细信息。
      我之前可能只使用 ps aux 或 ps -ef 来查看所有进程,但文档提到的 ps -eF 和 ps -eo 命令让我对查看进程的可定制性有了更深刻的理解。
      2.2 top:实时监控系统性能
      top 是 Linux 系统中非常重要的性能监控工具。通过 top,我们可以查看当前系统中进程的 CPU、内存使用情况以及其他资源的占用情况。
      这部分让我意识到,掌握 top 的快捷键和各种选项,能够帮助我们快速识别系统中的瓶颈。例如,top 可以按 CPU 占用率、内存占用等方式排序,极大提高排查问题的效率。
      2.3 kill、pkill 和 killall:终止进程
      这几个命令是用于终止或发送信号给进程的工具。文档详细讲解了如何通过 kill 发送不同类型的信号,常见的 SIGTERM 和 SIGKILL 信号的区别,让我更加清楚地了解在不同场景下该如何优雅地结束一个进程。
      pkill 和 killall 命令通过进程名称来结束进程,对于需要批量处理同类进程的情况非常有用。
      2.4 nice 和 renice:调节进程优先级
      nice 和 renice 命令用于调节进程的优先级。这让我了解了在多任务系统中,如何根据系统负载对进程的执行优先级进行控制,确保关键任务能够优先执行。
      对于长时间运行的任务或高负载进程,可以使用 renice 命令降低其优先级,避免占用过多的 CPU 资源影响其他重要进程的执行。


      IP属地:北京4楼2024-12-12 20:25
      回复
        六章、七章
        性能检查
        CPU平均负载 :sar -q 1 2
        内存使用量:free -m
        磁盘空间 df -h
        目录空间 du -sh
        网络工具
        netstat 命令获取服务端口等信息
        netstat与lsof 区别:lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等; 在查询网络端口时,经常会用到这个工具。
        ping包到地址IP: ping IP


        IP属地:北京5楼2024-12-26 19:33
        回复
          第八章
          1. 用户管理命令
          创建用户
          创建一个新用户。默认情况下会为用户创建一个主目录 (/home/username)。
          sudo useradd [用户名]
          例如,创建一个名为 john 的用户:
          sudo useradd john
          创建带特定家目录的用户
          使用 -d 参数指定用户的家目录:
          sudo useradd -d /home/john john
          设置用户密码
          设置用户的密码:
          sudo passwd [用户名]
          例如,设置 john 的密码:
          sudo passwd john
          修改用户信息
          使用 usermod 修改用户的属性:
          sudo usermod [选项] [用户名]
          常用选项:
          -aG:将用户添加到一个或多个用户组中,注意 -a 要与 -G 一起使用,以免覆盖原来的组。
          -d:更改用户的家目录。
          -s:更改用户的默认 shell。
          例如,将 john 用户添加到 sudo 组:
          sudo usermod -aG sudo john
          删除用户
          删除一个用户:
          sudo userdel [用户名]
          例如,删除用户 john:
          sudo userdel john
          如果要同时删除用户的家目录,可以使用 -r 参数:
          sudo userdel -r john
          查看用户信息
          查看当前用户信息:
          id [用户名]
          例如,查看 john 用户的 ID 和组信息:
          id john
          2. 用户组管理命令
          创建用户组
          创建一个新的用户组:
          sudo groupadd [组名]
          例如,创建一个名为 developers 的用户组:
          sudo groupadd developers
          将用户添加到用户组
          使用 usermod 命令将现有用户添加到用户组:
          sudo usermod -aG [组名] [用户名]
          例如,将 john 用户添加到 developers 组:
          sudo usermod -aG developers john
          删除用户组
          删除一个空的用户组:
          sudo groupdel [组名]
          例如,删除 developers 组:
          sudo groupdel developers
          查看组成员
          使用 getent 命令查看组成员:
          getent group [组名]
          例如,查看 developers 组的成员:
          getent group developers
          3. 文件权限管理
          查看文件权限
          使用 ls -l 查看文件的详细权限:
          ls -l [文件名]
          修改文件权限
          使用 chmod 命令来改变文件权限。可以使用数字模式或符号模式:
          数字模式:权限由三位数字表示,分别表示文件所有者、所属组和其他用户的权限(r=4, w=2, x=1)。
          例如,给 file.txt 文件添加所有者读写权限、所属组读权限、其他用户无权限:
          chmod 640 file.txt
          符号模式:使用符号表示权限。
          r:读权限
          w:写权限
          x:执行权限
          例如,给文件 file.txt 所有者添加执行权限:
          chmod u+x file.txt
          修改文件所有者
          使用 chown 命令更改文件的所有者和所属组:
          sudo chown [所有者]:[用户组] [文件名]
          例如,将文件 file.txt 的所有者更改为 john,所属组更改为 developers:
          sudo chown john:developers file.txt
          修改文件所属组
          使用 chgrp 命令更改文件的所属组:
          sudo chgrp [用户组] [文件名]
          例如,将文件 file.txt 的所属组更改为 developers:
          sudo chgrp developers file.txt
          4. 提高权限
          使用 sudo 获取管理员权限
          在 Linux 中,普通用户可以使用 sudo 获取管理员权限来执行特定的操作:
          sudo [命令]
          例如,使用 sudo 删除文件:
          sudo rm /path/to/file
          配置 sudo 权限
          编辑 /etc/sudoers 文件,指定哪些用户可以执行 sudo 命令:
          sudo visudo
          通过 sudoers 配置文件,你可以为特定用户指定可执行的命令及其权限。
          5. 查看用户和组信息
          查看所有用户
          使用 cat 命令查看系统中所有用户:
          cat /etc/passwd
          查看所有组
          使用 cat 命令查看系统中所有组:
          cat /etc/group
          查看用户的组信息
          使用 groups 命令查看用户所属的组:
          groups [用户名]
          例如,查看 john 用户所属的组:
          groups john


          IP属地:北京6楼2024-12-26 19:40
          回复
            第九章
            系统监控和性能管理
            文章详细介绍了如何使用 top、ps、htop 等命令监控系统的运行状态,查看进程、CPU 和内存使用情况,帮助管理员及时发现并处理性能瓶颈。
            磁盘和文件系统管理
            通过 df、du、lsblk 等命令,可以查看磁盘使用情况、磁盘分区和挂载点等。文章强调了磁盘管理在日常维护中的重要性,尤其是磁盘空间的监控和管理。
            软件包管理
            文章介绍了如何使用 apt、yum 等包管理工具安装、更新、卸载软件包,这对保持系统的软件环境安全和最新至关重要。
            日志管理
            使用 journalctl 和 dmesg 等命令查看系统日志和内核信息,帮助排查问题、进行故障诊断。
            用户和权限管理
            文章还提到了如何通过 useradd、usermod 等命令管理用户和组,以确保系统安全性和资源的合理分配。


            IP属地:北京7楼2024-12-26 19:41
            回复
              进阶1
              程序构建
              配置
              ./configure --help 查询可用的配置选项
              ./configure --prefix=/usr/local/snmp 配置路径
              编译
              make -f myMakefile 指定需要编译的makefile,满足默认条件不需指定
              makefile
              $@目标文件名
              @^所有前提名,除副本
              @+所有前提名,含副本
              @<一个前提名
              @?所有新于目标文件的前提名
              @*目标文件的基名称
              makefile 编译过程中依赖的非标准库和头文件路径需要显式指明
              CPPFLAGS -I标记非标准头文件存放路径
              LDFLAGS -L标记非标准库存放路径
              g++编译
              -o指明目标文件
              -g添加调试信息
              -E查看中间文件
              安装
              make install


              IP属地:北京8楼2025-01-22 10:46
              回复
                进阶2
                进程调试
                ————————————————————————————————
                gdb 程序交互调试
                GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具
                从一个完整的调试过程简单说明最基本的几个命令:
                gdb programmer # 启动gdb
                break main # 设置断点
                run # 运行调试程序
                next # 单步调试
                print var1 # 在调试过程中,我们需要查看当前某个变量值的时候,使用print 命令打印该值
                list # 显示当前调试处的源代码
                info b # 显示当前断点设置情况
                ————————————————————————————————
                pstack 跟踪栈空间
                pstack是一个脚本工具,可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行
                pstrack <program-pid>
                ————————————————————————————————
                strace 分析系统调用
                strace常用来跟踪进程执行时的系统调用和所接收的信号
                Linux进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备
                strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间


                IP属地:北京9楼2025-01-22 10:47
                回复
                  2026-04-24 20:26:00
                  广告
                  不感兴趣
                  开通SVIP免广告
                  进阶3
                  1.系统响应变慢,首先得定位大致的问题出在哪里,是IO瓶颈、CPU瓶颈、内存瓶颈还是程序导致的系统问题;
                  排查可用top命令,
                  进入交互模式后
                  输入M,进程列表按内存使用大小降序排序,便于我们观察最大内存使用者使用有问题(检测内存泄漏问题);
                  输入P,进程列表按CPU使用大小降序排序,便于我们观察最耗CPU资源的使用者是否有问题;
                  top第三行显示当前系统的,其中有两个值很关键:
                  %id:空闲CPU时间百分比,如果这个值过低,表明系统CPU存在瓶颈;
                  %wa:等待I/O的CPU时间百分比,如果这个值过高,表明IO存在瓶颈;
                  优化
                  优化自己开发的程序,建议采用以下准则:
                  二八法则:在任何一组东西中,最重要的只占其中一小部分,约20%,其余80%的尽管是多数,却是次要的;在优化实践中,我们将精力集中在优化那20%最耗时的代码上,整体性能将有显著的提升;这个很好理解。函数A虽然代码量大,但在一次正常执行流程中,只调用了一次。而另一个函数B代码量比A小很多,但被调用了1000次。显然,我们更应关注B的优化。
                  编完代码,再优化;编码的时候总是考虑最佳性能未必总是好的;在强调最佳性能的编码方式的同时,可能就损失了代码的可读性和开发效率;


                  IP属地:北京10楼2025-01-22 10:49
                  回复
                    参考1、2、3
                    gdb
                    GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具;
                    运行
                    run:简记为 r ,其作用是运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。
                    continue (简写c ):继续执行,到下一个断点处(或运行结束)
                    next:(简写 n),单步跟踪程序,当遇到函数调用时,也不进入此函数体;此命令同 step 的主要区别是,step 遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调用函数,不会进入到函数体内。
                    step (简写s):单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的
                    until:当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。
                    until+行号: 运行至某行,不仅仅用来跳出循环
                    finish: 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。
                    call 函数(参数):调用程序中可见的函数,并传递“参数”,如:call gdb_test(55)
                    quit:简记为 q ,退出gdb
                    ldd
                    作用:用来查看程式运行所需的共享库,常用来解决程式因缺少某个库文件而不能运行的一些问题。
                    lsof
                    -a 列出打开文件存在的进程
                    -c<进程名> 列出指定进程所打开的文件
                    -g 列出GID号进程详情
                    -d<文件号> 列出占用该文件号的进程
                    +d<目录> 列出目录下被打开的文件
                    +D<目录> 递归列出目录下被打开的文件
                    -n<目录> 列出使用NFS的文件
                    -i<条件> 列出符合条件的进程。(4、6、协议、:端口、 @璐村惂鐢ㄦ埛_000052Z馃惥
                    -p<进程号> 列出指定进程号所打开的文件
                    -u 列出UID号进程详情
                    -h 显示帮助信息
                    -v 显示版本信息


                    IP属地:北京11楼2025-01-22 10:51
                    回复
                      还是连载


                      IP属地:北京来自iPhone客户端12楼2025-01-22 12:01
                      回复