免费发布信息
微信公众号
当前位置: 首页 » 帮助中心 » 常见问题 » 正文

最全Linux命令大全,建议收藏!!!

   来源:黔优网时间:2024-09-19 15:42:42 浏览量:0

前言

Linux和windows相比,很多管控都需要用命令来操作。windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件。

而Linux命令行方式的操作,特别是在服务器端编程、管理、运维方面,更加简单、短小、精悍。短短一行组合命令,即可完成在windows需要各种加工、整合的复杂高效的功能操作。

1.进程管理

w 显示当前在线用户情况

my_adm pts/0    111.111.111.111    三15   24:58   2:51   0.02s sshd: my_admin [priv]root     pts/3    111.111.111.112      13:15    3:47m  0.35s  0.35s -bashmy_adm pts/5    111.111.111.113    15:14    2.00s  0.54s  0.02s sshd: my_admin [priv]
登录后复制

pkill -kill -t pts/?? 杀掉指定名字的进程,如上述的pts/5

传送门:Linux中Kill进程的N种方法

2.系统信息

arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备 lsusb -tv 显示 USB 设备 date 显示系统日期 ctime=`date +%Y-%m-%dT%k:%M:%S` #格式化时间,如2018-01-13T11:09:19, 注意%k 与 %H的区别,前者返回9,后者返回09.YESTERDAY=`date +%Y-%m-%d -d "-1 days"` 获取昨日日期cal 2007 显示2007年的日历表 date 041217002007.00 设置日期和时间 - 月日时分年.秒 clock -w 将时间修改保存到 BIOS
登录后复制

查询网关地址(如将centos服务器网络获取类型由dhcp切换为static时,需要获取到ip及网关信息进行固化配置时会用到,如本地ip为10.34.0.123,则通过如下命令查询到网关为第一个3.254):

[root@file-server ~]# netstat -rnKernel IP routing tableDestination     Gateway         Genmask         Flags   MSS Window  irtt Iface0.0.0.0         10.34.3.254     0.0.0.0         UG        0 0          0 enp3g010.34.0.0       0.0.0.0         255.255.252.0   U         0 0          0 enp3g0192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 virbr0
登录后复制

CentOS / RedHat 系列,查看操作系统信息(如果没有lsb_release命令, 使用"yum install redhat-lsb"安装):

[root@server-test online]# lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux release 7.5.1804 (Core) Release: 7.5.1804Codename: Core
登录后复制

3.关机 (系统的关机、重启以及登出 )

shutdown -h now 关闭系统(1) init 0 关闭系统(2) telinit 0 关闭系统(3) shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 shutdown -r now 重启(1) reboot 重启(2) logout 注销
登录后复制

4.文件和目录

cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 pwd 显示工作路径 ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名 tree 显示文件和目录由根目录开始的树形结构(1) lstree 显示文件和目录由根目录开始的树形结构(2) mkdir dir1 创建一个叫做 'dir1' 的目录' mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 rm -f file1 删除一个叫做 'file1' 的文件' rmdir dir1 删除一个叫做 'dir1' 的目录' rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容 mv dir1 new_dir 重命名/移动 一个目录 cp file1 file2 复制一个文件 cp dir0/g' example.txt 用单个零替换多个零sed -i '3i helloword' test.txt   在test.txt文件的第三行插入‘helloword’字符串
登录后复制

“sed按指定字符串删除”专题:

用sed删除匹配到字符串的行:

语法:sed-i'/关键字符/d'文件名

举例1:匹配"\etc\install.sh"

sed -i '/\/etc\/install.sh/d' 1.txt
登录后复制

-i 表示操作在源文件上生效.否则操作内存中数据,并不写入文件中. 在分号内的/d表示删除匹配的行。

举例2:删除以a开头的行

sed -i '/^a.*/d' tmp.txt
登录后复制

^a表示开头是a, .*表示后跟任意字符串

Example-1: 使用sed进行文本批量替换

#!/bin/bash ddl_file_path=/c/Users/user/Downloads/sqoop_data/hive_2_mysql  ls $ddl_file_path | while read f;doecho "--------->"$ddl_file_path/$f ## Template#sed -i 's///g' $ddl_file_path/$f#sed -i "s///g" $ddl_file_path/$f sed -i 's/111.111.111.111:3306/222.222.222.222:3307/g' $ddl_file_path/$fsed -i "s/'password_1'/'password_2'/g" $ddl_file_path/$f done # echo -e "=========>\n\t Files contains keyword "/WARN:" in path $ddl_file_path are deleted!!!"
登录后复制
#!/bin/bash set -x ## Template#sed -i 's///g' $ddl_file_path/$f#sed -i "s///g" $ddl_file_path/$f ## Func 1 - 实现在所有文件的第四行、第五行插入指定文本 ddl_file_path=/e/迅雷下载/user_data_after ls $ddl_file_path | while read f;do        # 如果文件不是文件夹类型,才允许插入操作    if [ ! -d $f ];then        echo "--------->"$ddl_file_path/$f         sed -i '4i retries=10' $ddl_file_path/$f        sed -i '5i retry.backoff=3' $ddl_file_path/$f    fidone  ## Func 2 - 如果文件夹不存在,则创建;反之提示文件已存在 if [ ! -d "beijing" ];then    mkdir beijingelse    echo "File already exists"fi
登录后复制

文件类型的参数判别大全:

shell脚本判断文件类型 shell判断文件,目录是否存在或者具有权限 #!/bin/sh  myPath="/var/log/httpd/" myFile="/var/log/httpd/access.log"  # 这里的-x 参数判断$myPath是否存在并且是否具有可执行权限 if [ ! -x "$myPath"]; then mkdir "$myPath"  fi   # 这里的-d 参数判断$myPath是否存在  if [ ! -d "$myPath"]; then  mkdir "$myPath"  fi   # 这里的-f参数判断$myFile是否存在  if [ ! -f "$myFile" ]; then  touch "$myFile"  fi   # 其他参数还有-n,-n是判断一个变量是否是否有值  if [ ! -n "$myVar" ]; then  echo "$myVar is empty"  exit 0  fi   # 两个变量判断是否相等  if [ "$var1" = "$var2" ]; then  echo '$var1 eq $var2'  else  echo '$var1 not eq $var2'  fi
登录后复制

文件的判别逻辑大全:

-a file exists. -b file exists and is a block special file. -c file exists and is a character special file. -d file exists and is a directory. -e file exists (just the same as -a). -f file exists and is a regular file. -g file exists and has its setgid(2) bit set. -G file exists and has the same group ID as this process. -k file exists and has its sticky bit set. -L file exists and is a symbolic link. -n string length is not zero. -o Named option is set on. -O file exists and is owned by the user ID of this process. -p file exists and is a first in, first out (FIFO) special file or named pipe. -r file exists and is readable by the current process. -s file exists and has a size greater than zero. -S file exists and is a socket. -t file descriptor number fildes is open and associated with a terminal device. -u file exists and has its setuid(2) bit set. -w file exists and is writable by the current process. -x file exists and is executable by the current process. -z string length is zero.  注意-s 和 -f 参数的区别
登录后复制
cat -n file1 标示文件的行数 cat example.txt | awk 'NR%2==1' 删除example.txt文件中的所有偶数行 echo a b c | awk '{print $1}' 查看一行第一栏 echo a b c | awk '{print $1,$3}' 查看一行的第一和第三栏 paste file1 file2 合并两个文件或两栏的内容 paste -d '+' file1 file2 合并两个文件或两栏的内容,中间用"+"区分 sort file1 file2 排序两个文件的内容 sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份) sort file1 file2 | uniq -u 删除交集,留下其他的行 sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件) comm -1 file1 file2 比较两个文件的内容只删除 'file1' 所包含的内容 comm -2 file1 file2 比较两个文件的内容只删除 'file2' 所包含的内容 comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分
登录后复制

综合案例:

①:本机tcp各种状态数统计

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'CLOSE_WAIT 2ESTABLISHED 276SYN_SENT 2TIME_WAIT 63270
登录后复制

awk 'BEGIN { sum = 0; for (i = 0; i < 20; ++i) { sum += i; if (sum > 50) exit(10); else print "Sum =", sum } }'

②:使用cut提取文本字符串:

按“:”分割,提取/etc/passwd中第1,3,4,5列数据,按原分隔符":"进行拼接。

[hdfs@cdh01 test]$ head -n 5 /etc/passwd | cut -d : -f 1,3-5root:0:0:rootbin:1:1:bindaemon:2:2:daemonadm:3:4:admxixi:4:7:xixi
登录后复制

③:使用uniq进行滤重

cut的具体用法,如下:

A).去除重复行

sort target_file | uniq
登录后复制

B).查找非重复行

sort target_file | uniq -u
登录后复制

C).查找重复行

sort target_file | uniq -d
登录后复制

D).统计每一个文件出现的次数

sort target_file | uniq -c
登录后复制

④:排序

sort linux下的排序工具

参数说明:

-r  降序排列

-u  去重

-n  以数字大小排序(默认是首字母排序)

-t  指定分隔符 这里我们指定'|'为分隔符

-k  指定分隔后的第几位进行排序 这里我们指定第2位

任务:report.txt文件里有以下内容:记录了一些方法的执行时间,要求按执行时间降序排列.

命令:sort -run -k 2 -t '|' report.txt

 1 void com.dustpan.zeus.core.service.MergeService.startService(int)|2 2 void com.dustpan.zeus.core.service.InitShopDateService.startService(int)|1 3 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|475 4 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|96 5 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|1013 6 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|184 7 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|729 8 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|14 9 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|39410 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|9011 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|56912 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|79613 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|164814 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|8215 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|101816 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1417 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|93718 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1719 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|60120 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|5221 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|508122 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|38823 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|19824 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1125 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|20326 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1127 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|24128 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1329 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|17630 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1231 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|20632 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|3333 boolean com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|24234 boolean com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|19
登录后复制

案例一、找出本文件夹中包含my_test_calendar关键字的所有文件(含全路径+文件名),并滤重。

查询hive_sh目录下,包含搜索关键字'my_test_calendar'的文本出现的文件及关键字所在的行,将文件(文件路径+文件名) 字段提取出来,并做滤重处理。

[hdfs@nn1 hive_sh]$ find . -type f | xargs grep -rn &#39;my_test_calendar&#39; | cut -d : -f 1 | uniq
登录后复制

案例二、查找所有出现指定文本的文件并滤重(进阶版)

脚本说明:

遍历 hive_tables.txt 文件中的所有表(如 hive_table_1),查找其在指定目录/data/program/hive_sh/下的文件中,是否使用到。如果查到重复出现该文本的文件,做滤重处理。

cat query_table_usage_in_hive.sh

#!/bin/bash while read tbldo echo ------------------Handle table: $tbl--------------find /data/program/hive_sh/ -type f | xargs grep -rn $tbl | cut -d : -f 1 | uniq > ./output/${tbl}_result.txt done < hive_tables.txt
登录后复制

案例三、查找内存耗用top3的app

ps auxw | head -1;ps auxw|sort -rn -k4|head -5
登录后复制

以上就是最全Linux命令大全,建议收藏!!!的详细内容,更多请关注本网内其它相关文章!

 
 
没用 0举报 收藏 0
免责声明:
黔优网以上展示内容来源于用户自主上传、合作媒体、企业机构或网络收集整理,版权争议与本站无关,文章涉及见解与观点不代表黔优网官方立场,请读者仅做参考。本文标题:最全Linux命令大全,建议收藏!!!,本文链接:https://www.qianu.com/help/33026.html,欢迎转载,转载时请说明出处。若您认为本文侵犯了您的版权信息,或您发现该内容有任何违法信息,请您立即点此【投诉举报】并提供有效线索,也可以通过邮件(邮箱号:kefu@qianu.com)联系我们及时修正或删除。
 
 

 

 
推荐图文
推荐帮助中心