linux shell操作- 02 常用命令及案例

这篇具有很好参考价值的文章主要介绍了linux shell操作- 02 常用命令及案例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常用命令 续

  • linux发行版的工具
    • Ubuntu 包管理器 apt
    • CentOS包管理器 yum
    • OpenSUSE包管理器zypper
      • 包管理器使用
# 在线安装
zypper install sqlite3-devel
# 查询
zypper packages | grep -iE "tk-devel"
# 下载rpm
zypper download tk-devel=1.13
  • rpm软件包的安装
# 查询已安装
rpm -qa | grep -iE "libxcb-devel"
# 安装
rpm -ivh xxxx.rpm
# 升级安装
rpm -Uvh xxxx.rpm
# 卸载
rpm -ev xxx.rpm
  • 路径切换管理

    • 两个目录间来回切换使用cd -
    • 多个目录来回切换,pushd入栈
      • pushd dir1;
      • pushd dir2;
      • pushd +0; 切到栈顶目录 ;
      • pushd +1; 从栈顶依次向下走一步;
      • popd 出栈;
  • 查看文件差异 diff;

    • diff -u version1 version2 > v.patch 查看差异
    • patch -p1 version1 < v.patch 修补版本1 ;需要安装patch包
       
  • 定时任务

    • 通过文本编辑cron任务,实现定时操作
      • 分 小时 天 月 星期 绝对路径sh or cmd
      • * 表示每个xxx,如每个小时
      • 每小时的第三分钟执行cmd-> 03 * * * * /home/lauf/scraw.sh
      • 每天的第5、8个小时执行-> 00 5,8 * * * cmd
      • 周日的每小时执行-> 00 */12 * * 0 cmd
      • 每天凌晨 -> 00 02 * * * cmd
      • 将任务写入 task.cron 文件中。
    • 执行定时任务 crontab task.cron
    • 或者 crontab <<EOF; xxxx; EOF
    • crontab -e 直接编辑定时任务
    • crontab -l 查看定时任务
    • crontab -r 直接移除所有任务
    • crontab -u 操作某用户的任务
    • 案例
      • 01 * * * * ls -l /home/laufing > log.txt
  • 查看信息

    • hostname,查看主机名信息;编辑主机名vim /etc/hostname
    • cat /etc/hosts 查看本地地址映射;
    • uname -a,查看内核信息
    • cat /proc/cpuinfo cpu信息
    • cat /proc/meminfo 内存
    • cat /proc/partitions 分区
    • cat /proc/version 发行版
    • /proc 在内存中存储进程信息,每个数字目录为一个进程;
    • which cmd 可执行文件的路径;同whereis,搜索PATH
    • whatis cmd 查看功能信息
    • who 当前登录的用户;whoami 当前终端用户;users; last 上次登录信息; uptime系统已运行时间;
       
  • 进程管理

    • ps 查看进程信息;
    • ps -ef ; every process所有用户的进程 , f 字段格式
    • ps -axf; 所有进程(所有用户)
    • ps -axu 所有进程
    • ps -ef --sort ppid 查看所有进程,并根据ppid排序;
    • ps -ef -o pcpu -o pmem -o comm -o user; 只输出指定列
    • ps -C xxx ; 根据进程名称获取信息
      • ps -C mysqld; 获取mysql 服务进程信息
      • ps -C postgres;
      • pidof postgres;根据进程名称,获取所有的进程id;
      • pgrep postgres; 根据进程名称,获取所有的进程id;
      • ps -ef | cut -f 2 -d " " | xargs kill -9 获取进程id,并杀掉进程;
      • pidof postgres | xargs kill -9
    • ps -efL ; -L同时输出线程信息,LWP为线程id
    • top 查看进程的系统资源占用情况
      • top -o %CPU 按CPU降序;
      • top -o %MEM 按内存降序
    • linux进程间通信,使用信号kill 向进程传递信号
      • kill -l 查看所有的信号
        [laufing@centos ~]$ kill -l
      1. SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+338) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+1348) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-1253) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-758) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-461) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX
      • kill -s SIGKILL pid; 通过向进程传递SIGKILL信号 终止进程
      • kill -9 pid ;强制杀死进程
      • killall 类似pkill,根据进程名称杀死进程
      • Ctrl + C 向进程发送SIGINT信号;
      • 案例,编写一个脚本,使进程一直运行(事件循环), 关联处理函数与SIGINT信号,每次按Ctrl + C 打印输出。
#!/bin/bash
#handle function
handler(){
  echo "ctrl + c pressed."
}
#associate
trap "handler" SIGINT
while true;do
        echo running... > log.txt
done
  • 查看文件内容cat、head、tail
    • cat a.txt
    • cat a.txt b.txt > c.txt 查看并拼接内容
    • head -n 20 /etc/profile 查看前20行;
    • head -n -10 /etc/profile; -10表示后10行之前的内容;
    • tail -n 10 /etc/profile; 查看后10行
    • tail -n +10 /etc/profile; 查看前10行之后的内容
    • tail -f /etc/profile; 追踪新写入的内容;
    • tail --pid 123 与写入的进程同步;

 

  • wc 统计

    • wc -l test.sh ; 统计行数
    • wc -w test.sh;统计单词数
    • echo my name is jack | wc -w
    • wc -c test.sh 统计字符数
    • wc -L test.sh ;最长行的长度
  • tree 目录树

    • tree -h 查看文件树,并展示文件大小;
    • tree -h -o result.txt;-o 结果输出到文件中
    • tree -h -P test.sh ;-P 匹配文件
    • du -ah 磁盘文件的使用情况;
    • du -sh *;
    • df -h 磁盘的可用情况;

 

  • 正则匹配grep
    • grep 正则匹配,默认使用通配符模式,返回匹配到的行
    • -i 忽略大小写
    • -E 正则匹配模式 ,相当于egrep
    • -o 返回匹配的内容,默认返回匹配到的行
    • -v 匹配到的行以外的内容;
    • -c 统计匹配到的行数
    • -n 显示匹配到的行号
    • –color=auto/always 标注匹配内容颜色
    • -l 返回匹配到的文件列表;-L 返回未匹配到的文件列表
    • -e 指定多个匹配模式; -r 递归; -q 静默,匹配成功 $?为0,否则为1;
    • -Z 以0作为定界符;
    • 连带内容 -A 3 匹配的行 连带后三行; -B 2 匹配的行 连带前两行;-C 2 连带前、后两行
# 匹配文件内容
grep -iE -l  "^while" *.sh
test.sh

# 标准输入 中的匹配
echo laufing | grep -i -e 'au' -e ng
laufing

# 递归搜素指定的文件
grep -rn --include='*.sh' --include='*.txt' -e 'while' . # 指定目录
./test.sh:10:while true
# --exclude=*.sh  排除指定文件
# --exclude-from

# 递归匹配 
grep -Rn 'xxx' .

linux shell操作- 02 常用命令及案例,linux,linux,服务器,定时操作
 

  • cut 过滤字段
    • cut -f 3 result.txt ;获取文件中的第三列;
    • -d 指定定界符,默认为\t;
    • -f 指定第几列,从1开始;
    • -f 1 --complement ;第一列以外的列;
    • -c 1-5 ; 字符范围 作为列
      查看8010端口的进程,并根据pid杀掉所有进程
# netstat -tnp
lsof -i:8010 | cut -f 2 -d " " | xargs kill -9

 

  • 磁盘使用情况
    • df -h;可以空间 kb单位
    • du -h; 文件大小
      • -a 递归
      • -h 可读性
      • -c 统计
      • -s 总结
      • -b 以byte为单位
    • 找出指定的目录中,最大的十个文件,并降序输出
# 总结
du -sh /home/laufing/* | sort -nrk 1 | head  

简单案例

  1. 编写shell脚本,输出当前用户是否为root用户。
#!/bin/bash
# 开启调试
set -x

# 数值比较 测试
if [ $UID -eq 0 ]; then
	echo "you are root."
else
	echo "you are common user."
fi

添加可执行权限:chmod u+x lauf.sh

  1. 编写shell脚本,接收命令行参数 m 、 n,输出 m n {m^n} mn
#!/bin/bash
# 变量直接赋值,一切值均为字符串
m=$1
n=$2
echo $m $n
echo -e "calc result:\n" # -e 有转义字符
echo "${m}^${n}" | bc

  1. 编写shell脚本,创建一个普通数组(‘tom’ ‘jack’ ‘lucy’),使用for循环遍历出每个元素。
#!/bin/bash

#!/bin/bash

arr=('tom' 'jack' 'lucy')
for((i=0; i < ${#arr[*]}; i++)){ # 数组长度
    echo ${arr[i]}  # 普通数组,索引访问 arr[@] / arr[*] 获取所有的元素
    echo ${#arr[i]} # 每个元素的长度
}
  1. 编写shell脚本,存储水果的价格,apple: 3.4,pear: 2.3,banana: 2.8;命令行传参一个水果的名字,输出它的价格。
#!/bin/bash

# 声明关联数组,支持字符串索引,相当于python字典
declare -A price
price['apple']=3.4
price['pear']=2.3
price['banana']=2.8

echo "${price[$1]}"

# 命令行执行
$ ./lauf.sh  apple

 
5. 编写shell脚本,查看当前目录下占用磁盘空间最大的5个文件,并自定义一个命令,名为lauf,命令行下执行lauf命令即可执行脚本。

  • du -ah 查看磁盘使用情况
  • alias 定义命令别名,防止输入过长。命令行下临时生效,配置文件中永久生效
  • 开启调试模式
    • sh -x lauf.sh
    • #!/bin/bash -xv
    • set -x 写在脚本语句中 set +x 关闭调试
#!/bin/bash
du -ah | sort -nrk 1 | head -n 5

# sort 
# -n 数值排序
# -k 指定列
# -r 逆序排序

linux shell操作- 02 常用命令及案例,linux,linux,服务器,定时操作
6. 编写shell脚本,要求用户输入用户名、密码,其中输入密码时不允许显示,最后打印用户名及密码,并统计程序执行的时间。

  • read 获取用户的输入,如 read password, 读取内容并存入password变量;
    read -p “提示:”,
    read -s 静默输入,不显示,
    read -n 读取指定数量的字符
  • stty -echo 不允许显示; stty echo 允许显示;
  • date 获取日期时间,date  +%s 获取时间戳, date +%a星期, date +%d日期,date +%b月份, date +%y/Y年,date +%H小时,date +%M分钟,date +%S秒
#!/bin/bash

# 计算开始时间
start=$(date +%s)   # (xxx) 子shell , 即子进程; $() 相当于``
# 输入用户名
read -p "input your name:" username
# 不显示
stty -echo
read -p "input your password:" password
# 显示
stty echo

# 输出
echo "your name: $username"
echo "your password: $password"
# 计算结束时间
end=$(date +%s)

# 计算差值
let delta=end-start
echo "total time: $delta s."

 
7. 编写shell,循环10次,每次延迟5s,计算程序执行总时间。

#!/bin/bash
start=$(date +%s)
for i in {1..10}; do
	sleep 5 # 休眠  命令行参数传入时间
	echo $i
done
end=$(date +%s)

delta=$[end-start]
echo "total time: $delta s."

 
 
上一篇: linux shell操作- 01 基础必备
下一篇:linux shell操作- 03 用户切换及shell案例文章来源地址https://www.toymoban.com/news/detail-733313.html

到了这里,关于linux shell操作- 02 常用命令及案例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)

    1、第一个案例:helloworld 2、打印运行的python进程 3、获取并打印参数 4、用脚本写for循环 5、使用C语言风格的for命令 6、while循环案例 7、使用break跳出外部循环 8、使用continue命令 9、case案例 10、判断两个数是否相等 11、使用双圆括号 12、使用双方括号 13、反引号的使用 14、字

    2024年02月07日
    浏览(50)
  • 游戏思考26:游戏服务器压力测试文档(新增linux相关命令,02/10未完待续)

    ①流量 ②内存 ③一些主要的功能才做压力测试,比如 同时注册 , 最大在线 , 战斗 , 地图移动 , 数据存取 等。 ④2个压力宏观数据保持不变: a. 各接口的压力比例不变 , 首先从同类型游戏或者本游戏内测阶段,日志插桩,收集各个接口的调用比例;然后,将接口比例

    2024年02月01日
    浏览(48)
  • Linux操作服务器常用操作

    查看操作系统版本: cat /proc/version 查看操作系统64位还是32位: getconf LONG_BIT 查看CPU: 基本信息:lscpu 详细信息:cat /proc/cpuinfo 过滤想要的信息: grep \\\'physical id\\\' /proc/cpuinfo |sort |uniq |wc -l    #CPU个数 grep \\\'cpu cores\\\' /proc/ cpuinfo lunia                    #一个CPU有多少物理核心

    2023年04月22日
    浏览(51)
  • linux常用查看服务器内存的命令

    free 命令用来显示系统内存状态,包括系统物理内存、虚拟内存(swap 交换分区)、共享内存和系统缓存的使用情况,其输出和 top 命令的内存部分非常相似。   free 命令的基本格式如下: [root@localhost ~]# free [选项] 表 1 罗列出了此命令常用的选项及各自的含义。 表 1 free 命令

    2024年02月16日
    浏览(94)
  • 华为云云耀云服务器L实例评测|docker 常用操作命令

    ​ 前面讲到了docker环境的安装,这是我们可以直接打开远程连接华为云云耀云服务器L实例,直接连接公网IP,就可以使用。我们先查看docker版本,可以看到版本为24.0.4。 当您购买了云耀云服务器L实例后,可以根据业务需要搭建为不同的环境、网站或应用。本文汇总了基于云

    2024年02月07日
    浏览(55)
  • Linux CentOS 7 服务器集群硬件常用查看命令

    (一)查看内核:uname -a (二)查看系统: cat /etc/redhat-release (三)查看CPU: cat /proc/cpuinfo 或者 lscpu tips:两者命令差不多,lscpu更简洁,主要关注 Core(s) per socket 和 Socket(s) 参数,以及 Thread(s) per core 。后者表示逻辑核心,一般是1,如果使用超线程技术,则是2; CPU(s) 是三者

    2024年04月27日
    浏览(58)
  • 【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 上)

    在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地

    2024年01月16日
    浏览(59)
  • linux中用shell脚本定时备份重要日志等文件【命令结果输出也在内。按月份自动创建时间自动规划到月份中】、linux中用shell脚本备份文件并自动scp汇总到一个服务器上

    现在甲方有一个需求:要求每月备份系统日志 问题: 1、有37台服务器需要备份且汇总到一

    2024年02月19日
    浏览(59)
  • Python 与机器学习,在服务器使用过程中,常用的 Linux 命令包括哪些?

    🍉 CSDN 叶庭云 : https://yetingyun.blog.csdn.net/ 本博客旨在分享在实际开发过程中,开发者需要了解并熟练运用的 Linux 操作系统常用命令。Linux 作为一种操作系统,与 Windows 或 MacOS 并驾齐驱,尤其在服务器和开发环境中占据重要地位。Linux 命令,简而言之,就是指导计算机执行

    2024年04月12日
    浏览(60)
  • HDFS操作常用的Shell命令

    目录 (1)   向HDFS 中上传任意文本文件,如果指定的文件在HDFS中已经存在,由用户指定是追加到原有文件末尾还是覆盖原有的文件; (2)   从HDFS中下载指定文件,如果本地文件与要下载的文件名称相同,则自动对下载的文件重命名; (3)   将HDFS中指定文件的内容输出到终端中

    2023年04月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包