Linux记录

本文详细介绍了Linux系统中的目录结构,包括/proc和/dev目录的特殊性。/proc目录反映了内核状态,而/dev目录用于访问外部设备。讨论了Linux文件的基本属性,如所有者、组和其他用户的权限,以及如何使用chown和chmod命令进行修改。还提到了常用命令如ps和top用于监控系统资源,特别是CPU和内存使用情况。文章强调了理解文件权限和系统监控对于Linux系统管理的重要性。
摘要由CSDN通过智能技术生成

linux系统目录结构

在这里插入图片描述
详见
值得一提的几个点:
1./proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件
2./dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的
真是一切皆文件啊!

linux文件基本属性

文件属性分两块,所有用户,以及该所有用户可修改的权限
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
chown (change ownerp) : 修改所属用户与组。
chmod (change mode) : 修改用户的权限。

在 Linux 中我们可以使用 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如

dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot

实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。

在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。

当为 d 则是目录
当为 - 则是文件;
若是 l 则表示为链接文档(link file);
若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。

主要看得菜鸟教程,linux经常可能用到操作文件权限,至于属主少点。
下面看看chmod

chmod:更改文件9个属性

Linux文件属性有两种设置方法,一种是数字,一种是符号。
Linux 文件的基本权限就有九个,分别是 owner/group/others(拥有者/组/其他) 三种身份各有自己的 read/write/execute 权限。

数字修改权限

先复习一下刚刚上面提到的数据:文件的权限字符为: -rwxrwxrwx , 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: -rwxrwx— 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= — = 0+0+0 = 0
chmod语法:chmod [-R] xyz 文件或目录

现在知道777 啥意思了吧,,据说所有用户有所有权限,,,

符号类型改变文件权限

还有一个改变权限的方法,从之前的介绍中我们可以发现,基本上就九个权限分别是:

user:用户
group:组
others:其他
那么我们就可以使用 u, g, o 来代表三种身份的权限。

此外, a 则代表 all,即全部的身份。读写的权限可以写成 r, w, x,也就是可然后 + - 和 = ,表示增加,删除 等于什么权限

如果我们需要将文件权限设置为 -rwxr-xr-- ,可以使用

chmod u=rwx,g=rx,o=r

而如果是要将权限去掉而不改变其他已存在的权限呢?例如要拿掉全部人的可执行权限,则:

chmod a-x xxxxxx

其他详见https://www.runoob.com/linux/linux-file-attr-permission.html

一些用得还不太熟的常用命令

ps

查看cpu占用高的

ps -eo pid,ppid,%mem,%cpu,comm --sort=-%cpu | head

    PID    PPID %MEM %CPU COMMAND
  30991    1198  6.9 18.0 vmware-vmx
   4717    1198  6.1 10.0 vmware-vmx
   1479    1198  0.2  1.8 vino-server
   1215    1213  0.2  1.2 Xorg
   5238    5237  4.8  0.5 java
   6703    6640  1.2  0.5 code
   6672    6643  1.5  0.4 code
  13084    6640  0.6  0.3 code
   1510    1198  1.5  0.2 gnome-shell

top

Linux 系统下执行 top 命令得到以下结果(第一列为进程的 PID,第二列为进程所属用户)
在这里插入图片描述
开始是一些统计信息,然后看列名含义:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称

通过上图可以看出排在一行的进程 PID 4717占用 cpu 过高,定位到了进程 id。如果只想观察 进程PID 4717的 CPU和内存以及负载情况,可以使用以下命令:

top -p 4717

在这里插入图片描述
还可以通过 top 命令定位问题进程中每个线程占用 cpu 情况,如查看进程 PID 2438 的每一个线程占用 cpu 的情况,使用如下命令:

top -p 2438 -H

在这里插入图片描述

运行top命令后
有两种途径换为memory排序:
a) 打开大写键盘的情况下,直接按M键
b) 未打开大写键盘的情况下,Shift+M键
M换成P就是cpu排序

以下常用命令 参考
具体用到 --help 可以查看帮助信息,命令太多记不住很正常,查嘛
ctrl + r,反向查找历史命令
终端中按下 ctrl + r,可弹出搜索历史命令行,输入你要查找你输入过命令的关键信息,即可弹出完整历史命令

Linux 命令及其参数繁多,大多数人都是无法记住全部功能和具体参数意思的。在 linux 终端,面对命令不知道怎么用,或不记得命令的拼写及参数时,我们需要求助于系统的帮助文档; linux 系统内置的帮助文档很详细,通常能解决我们的问题,我们需要掌握如何正确的去使用它们。

需要知道某个命令的简要说明,可以使用 whatis;而更详细的介绍,则可用 info 命令;
在只记得部分命令关键字的场合,我们可通过 man -k 来搜索;
查看命令在哪个位置,我们需要使用 which;
而对于命令的具体参数及使用方法,我们需要用到强大的 man ;
但是全是英文,挑战大啊哈哈

系统

# lsb_release -a         # 查看操作系统版本
# head -n 1 /etc/issue   # 查看操作系统版本
# uname -a               # 查看内核/操作系统/CPU信息
# cat /proc/cpuinfo      # 查看CPU信息
# hostname               # 查看计算机名
# lspci -tv              # 列出所有PCI设备
# lsusb -tv              # 列出所有USB设备
# lsmod                  # 列出加载的内核模块
# env                    # 查看环境变量

资源

free -m                # 查看内存使用量和交换区使用量(单位MB)
df -h                  # 查看各分区使用情况
df -hT                # 查看硬盘使用情况
du -sh <目录名>        # 查看指定目录的大小
uptime                 # 查看系统运行时间、用户数、负载

磁盘和分区

# mount | column -t      # 查看挂接的分区状态
# fdisk -l               # 查看所有分区
# swapon -s              # 查看所有交换分区
# hdparm -i /dev/hda     # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE       # 查看启动时IDE设备检测状况

网络

# ifconfig               # 查看所有网络接口的属性
# iptables -L            # 查看防火墙设置
# route -n               # 查看路由表
# netstat -lntp          # 查看所有监听端口
# netstat -antp          # 查看所有已经建立的连接
# netstat -s             # 查看网络统计信息

查找目录:find /(查找范围) -name ‘查找关键字’ -type d
查找文件:find /(查找范围) -name ‘查找关键字’ -print
创建多层目录:mkdir -p /xxx/xxx/

uptime:打印系统总共运行了多长时间和系统的平均负载。uptime 命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

log文件输出重定向

输出重定向 > 和 >>方法

ifconfig > network.txt  # 或者 ifconfig --> network.txt,把 ifconfig命令运行的结果保存到network.txt 文件中

重定向符号说明:

# > 是把输出转向到指定的文件,如文件已存在的话也会重新写入,文件原内容不会保留。
# >> 是把输出附向到文件的后面,文件原内容会保留下来。

0:标准输入。 1:标准输出。 2:错误信息输出。 2>&1:将错误信息重定向到标准输出。

错误重定向:
最常用的方式有:

command > file 2>file 与command > file 2>&1 首先command > file 2>file
的意思是将命令所产生的标准输出信息,和错误的输出信息送到file 中.command > file 2>file
这样的写法,stdout和stderr都直接送到file中,
file会被打开两次,这样stdout和stderr会互相覆盖,这样写相当使用了FD1和FD2两个同时去抢占file 的管道。
而command >file 2>&1 这条命令就将stdout直接送向file, stderr
继承了FD1管道后,再被送往file,此时,file 只被打开了一次,也只使用了一个管道FD1,它包括了stdout和stderr的内容。
从IO效率上,前一条命令的效率要比后面一条的命令效率要低,所以在编写shell脚本的时候,较多的时候我们会command > file 2>&1 这样的写法
https://blog.csdn.net/libo222/article/details/52911068

tee 命令
前面的 > 命令不会输出命令信息,tee 命令可以再输出信息的同时把信息记录到文件,用法解释:

tee – 从标准输入读取并写入到标准输出和文件中
-a 参数, 附加至给出的文件,而不是覆盖它。
$ ls -al | tee ls.txt  # #将会在终端上显示 ls -al 命令的执行结果,并把执行结果输出到 ls.txt 文件中(原本的内容被覆盖

script 命令
多个命令的输出都需要记录的情况使用 script 命令,例子:

$script -a terminal.txt 
Script started, output log file is 'terminal.txt'.
$ls -al
... 内容省略
$ exit
Script done.
$ cat terminal.txt  # 查看 terminal.txt 文本文件内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值