linux中shell等命令参考

 

系统信息查看

#显示所有文件(包含隐藏文件)
ls -a
#只显示隐藏文件
l.
或者
ls -d .*

 查看cpu信息、机器硬件型号


# linux 查看显卡信息
lspci | grep -i vga


# nvidia GPU查看显卡信息
lspci | grep -i nvidia

# Nvidia 自带工具
nvidia-smi

# 前边的序号 "00:0f.0"是显卡的代号
# 查看指定显卡的详细信息用以下指令
lspci -v -s 02:00.1


# 周期性的输出显卡的使用情况,用watch指令实现,命令行参数-n后边跟的是执行命令的周期,以s为单位。
watch -n 10 nvidia-smi
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)

# cat /proc/cpuinfo | grep physical | uniq -c

4 physical id : 0

4 physical id : 1
(说明实际上是两颗4核的CPU)

# getconf LONG_BIT

32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)

# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l

8
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)

再完整看cpu详细信息, 不过大部分我们都不关心而已.

# dmidecode | grep 'Processor Information'

查看内存信息

# cat /proc/meminfo

# uname -a

Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看当前操作系统内核信息)

# cat /etc/issue | grep Linux

Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
(查看当前操作系统发行版信息)

查看机器型号

# dmidecode | grep "Product Name"
查看网卡信息

# dmesg | grep -i eth

CPU信息查看:

 参考: https://blog.51cto.com/chaichuan/2073878

查看逻辑CPU个数:
#cat /proc/cpuinfo |grep "processor"|sort -u|wc -l
24
查看物理CPU个数:
#grep "physical id" /proc/cpuinfo|sort -u|wc -l                   
2
#grep "physical id" /proc/cpuinfo|sort -u                   
physical id     : 0
physical id     : 1
查看每个物理CPU内核个数:
#grep "cpu cores" /proc/cpuinfo|uniq
cpu cores       : 6
每个物理CPU上逻辑CPU个数:
#grep "siblings" /proc/cpuinfo|uniq
siblings        : 12
判断是否开启了超线程:
如果多个逻辑CPU的"physical id"和"core id"均相同,说明开启了超线程,或者换句话说

逻辑CPU个数 > 物理CPU个数 * CPU内核数   开启了超线程
逻辑CPU个数 = 物理CPU个数 * CPU内核数   没有开启超线程

文件信息查看

这种场景经常见到,比如执行umount,发现被占用,想找到被谁占用

使用fuser来查文件或目录被谁占用


fuser /proc  
/proc:                2454rc  
参数:-v 显示用多信息,-u 显示用户


# fuser -uv /proc  
                     用户     进程号 权限   命令  
/proc:               rtkit      2454 .rc.. (rtkit)rtkit-daemon  
想要显示/proc目录下所有文件和目录被占用情况,加-m参数



# fuser -uvm /proc  
                     用户     进程号 权限   命令  
/proc:               root       1311 f.... (root)rsyslogd  
                     root       1667 f.... (root)vmtoolsd  
                     root       2028 f.... (root)acpid  
                     haldaemon   2040 f.... (haldaemon)hald  

使用删除某个PID,加-k参数,加入-i,配合-k会询问用户意愿



# fuser -ki /proc  
/proc:                2454rc  
杀死进程 2454 ? (y/N) n  

lsof的使用

lsof列出被进程所打开的文件,直接运行,输出内容很多

加参数-u找某个用户的进程


# lsof -u root|more  
COMMAND     PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME  
init          1 root  cwd       DIR              253,0      4096          2 /  
init          1 root  rtd       DIR              253,0      4096          2 /  
init          1 root  txt       REG              253,0    150352       4560 /sbi  
n/init  
...   
+d 参数,找某个目录被打开的文件

-a 多个条件同时成立,例如找root用户打开/proc的情况


# lsof +d /proc -a -u root  
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF       NODE NAME  
rsyslogd   1311 root    3r   REG    0,3        0 4026532038 /proc/kmsg  
vmtoolsd   1667 root   16r   REG    0,3        0 4026532032 /proc/meminfo  
vmtoolsd   1667 root   17r   REG    0,3        0 4026532033 /proc/stat  
vmtoolsd   1667 root   18r   REG    0,3        0 4026532020 /proc/vmstat  

lsof      24962 root    3r   DIR    0,3        0          1 /proc  
还有个参数-U ,用来列出socket文件类型

文件权限设置:

文件权限中 chmod、u+x、u、r、w、x分别代表什么: 

参考: https://blog.csdn.net/bjarnecpp/article/details/79912495

 

sh 脚本执行

1. 用绝对路径或相对路径执行

/xxx/xx/test.sh 或 ./test.sh, 要求sh文件必须有可执行权限,可以用命令 chmod a+x test.sh来添加

2. 用bash或sh来执行

bash test.sh 或 sh test.sh

3. 用source 或 . 来执行

source test.sh 或 . test.sh 这样的一大特点是,在本shell执行,前面的方式都是在本shell的子shell中执行,不能获取sh文件中的变量

 

Shell 命令查找

Ctrl + r

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值