【基础】Linux 常用操作

组管理与权限管理

Linux 组管理

在 Linux 系统当中,每个用户都将属于一个组,不会独立存在。对于一个文件而言,那个用户创建了这个文件,哪个用户就是该文件的所有者。文件被创建后,其所有者可以改变。

查看文件所属用户与所属组

可以通过ls -ahl命令查看当前文件夹下所有文件的信息,结果中第三列展示的是文件所属用户,第四列展示的是文件所属的组。

[root@master /]# ls -ahl
总用量 24K
dr-xr-xr-x.  17 root root  244 1110 09:14 .
dr-xr-xr-x.  17 root root  244 1110 09:14 ..
-rw-r--r--    1 root root    0 1110 09:14 .autorelabel
lrwxrwxrwx.   1 root root    7 113 14:36 bin -> usr/bin
dr-xr-xr-x.   5 root root 4.0K 118 14:15 boot
...

在文件/etc/group下存放着所有的组,使用cat /etc/group命令可以进行查看

[root@master ~]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
...

创建、修改用户以及组

  • useradd [用户名] [选项]:新增一个 Linux 用户

    • -g:创建新用户并分配到指定组
  • usermod [用户名] [选项]:根据选项更改用户相应信息

    • -g:更改用户所属组

    • -d:更改用户登录的初始目录

  • groupadd [组名]:新增用户组

[root@master ~]# groupadd animal
[root@master ~]# cat /etc/group | grep animal
animal:x:1000:
[root@master ~]# useradd dog -g animal
[root@master ~]# id dog
uid=1000(dog) gid=1000(animal)=1000(animal)
[root@master ~]# usermod dog -g root
[root@master ~]# id dog
uid=1000(dog) gid=0(root)=0(root)

Linux 文件权限管理

查看文件权限

可以通过ls -ahl命令查看当前文件夹下所有文件的信息,结果中第一列展示的即权限相关的信息。

[root@master /]# ls -ahl
总用量 24K
dr-xr-xr-x.  17 root root  244 1110 09:14 .
dr-xr-xr-x.  17 root root  244 1110 09:14 ..
-rw-r--r--    1 root root    0 1110 09:14 .autorelabel
lrwxrwxrwx.   1 root root    7 113 14:36 bin -> usr/bin
dr-xr-xr-x.   5 root root 4.0K 118 14:15 boot
...

其中:

  • 第 0 位表示文件的类型

    • d代表目录

    • -代表普通文件

    • l代表链接,相当于 windows 中的快捷方式

    • c代表字符设备文件,如鼠标、键盘

    • d代表块设备,比如硬盘

  • 第 1-3 位代表文件所有者对该文件的权限

  • 第 4-6 位代表文件所属组中其他用户对该文件的权限

  • 第 7-9 位代表其他用户对该文件的权限

补充:关于文件名的颜色

  • 绿色:代表可执行文件

  • 白色:代表普通文件

  • 蓝色:代表目录或者文件夹

  • 红色:代表压缩文件

rwx 权限说明

Linux 系统中对于文件的权限有三种:

  • r 代表可读(read);

  • w 代表可写(write);

  • x 代表可执行(execute);

权限作用于文件作用于目录
r可以读取、查看可以读取,可以用ls查看目录内容
w可以修改(但未必可以删除)可以修改,可以创建、删除、重命名目录,拥有目录的写权限才能删除目录中的文件
x可以被执行可以进入该目录

上述三种权限也可以用数字来表示,其中r=4,w=2,x=1,因此不同的权限组合就对应着不同的数字,如 5 代表 r-x

chmod 修改权限

通过chmod [权限配置] [文件\目录名]可以修改对应文件或目录的权限,其中的【权限配置】有两种表达形式。

通过 +/-/= 实现

首先明确不同用户的字母代表

  • u:代表文件的所有者

  • g:代表文件所有组的其他用户

  • o:代表组外其他用户

  • a:代表所有人

对不同用户通过 +/-/= 相应权限即可实现权限的修改

[root@master dog]# ls -ahl
-rw-r--r--  1 dog  root   0 121 09:09 test
[root@master dog]# chmod u-w,g+w,o+w test
[root@master dog]# ls -ahl
-r--rw-rw-  1 dog  root   0 121 09:09 test
[root@master dog]# chmod u=rwx  test
[root@master dog]# ls -ahl
-rwxrw-rw-  1 dog  root   0 121 09:09 test

通过权限数字和实现

[root@master dog]# chmod 751 test
[root@master dog]# ls -ahl
-rwxr-x--x  1 dog  root   0 121 09:09 test
[root@master dog]# chmod 777 test
[root@master dog]# ls -ahl
-rwxrwxrwx  1 dog  root   0 121 09:09 test

chown 修改所有者

通过chown [选项] [所有者配置] [文件或目录名]可以修改文件或目录的所有者,其中常用的选项为-R,表示如果是目录,则递归修改其下的所有目录与文件的所有者。

[root@master dog]# ls -ahl | grep test
-rwxrwxrwx  1 dog  root   0 121 09:09 test
[root@master dog]# chown root test
[root@master dog]# ls -ahl | grep test
-rwxrwxrwx  1 root root   0 121 09:09 test
[root@master dog]# chown dog:animal test
[root@master dog]# ls -ahl | grep test
-rwxrwxrwx  1 dog  animal   0 121 09:09 test

chgrp 修改所有组

通过chgrp [所有组] [文件名或目录名]即可修改文件或者目录的所有组

[root@master dog]# ls -ahl | grep test
-rwxrwxrwx  1 dog  animal   0 121 09:09 test
[root@master dog]# chgrp root test
[root@master dog]# ls -ahl | grep test
-rwxrwxrwx  1 dog  root   0 121 09:09 test

定时任务调度

crond 定时任务调度

crond 定时任务调度可以按照配置的时间规则周期性的执行某项任务,该任务可以是一条指令、一个脚本。

通过crontab [选项]指令可实现对定时任务的设置,常用选项有:

  • -e:编辑 crontab 定时任务

  • -l:查询 crontab 定时任务

  • -r:删除当前用户所有的 crontab 定时任务

基本使用:执行crongtab -e进入文件,编写定时任务,保存退出即可,下列示例定义了一个定时任务,每分钟向 test.txt 文件中写入 Hello,World!

[root@master ~]# crontab -l
no crontab for root
[root@master ~]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@master ~]# crontab -l
*/1 * * * * echo "Hello,World!" >> /root/test.txt

关于 cron 表达式,其占位符含义如下:

含义取值范围
第一个“*”表示某小时中的第几分钟0-59
第二个“*”表示某天中的第几个小时0-23
第三个“*”表示某月中的第几天1-31
第四个“*”表示某年中的第几个月1-12
第五个“*”表示一周当中的周几0-7

使用下列符号以配置不同的时间含义:

含义
*表示任何时间
,表示不连续的时间
-表示连续的时间范围
/n表示周期性的时间,即多久执行一次

at 定时任务调度

at 定时任务调度将根据配置的时间,按时执行定义的某项任务,该任务只会被执行一次。

通过at [选项] [时间]即可实现定时任务调度,常用选项包括:

  • -m:当指定任务完成后,将会给用户发送邮件

  • -v:显示任务将被执行的时间

  • -c:打印任务的内容到标准输出

其他常用指令

  • atq:展示已经设置的任务

  • atrm [任务编号]:删除已经设置的任务

关于时间的设定,可以通过下列几种方式实现:

  • 按照hh:mm的格式指定时间,若当天该时间已经过去,则放在第二天执行

  • 采用 12 小时制,在数字后面加 am/pm 来指定时间

  • 指定具体的执行时间,指定格式为month daymm/dd/yydd.mm.yy,指定的日期必须跟在指定时间的后面

  • 使用相对记时,指定格式为now + count time-units

下列示例定义了一分钟之后将当前的日期信息覆盖写入对应文件,完成任务定义后按两下ctrl + d退出任务编辑(注意:centOS 7 最小系统不包含 at 服务,需要下载并启动服务方可使用)

[root@master ~]# at -v now + 1 minutes
Thu Dec  1 10:29:00 2022

at> date > /root/test.txt
at> <EOT>
job 3 at Thu Dec  1 10:29:00 2022
[root@master ~]# atq
3       Thu Dec  1 10:29:00 2022 a root

Linux 进程管理

ps 命令查看系统正在进行的进程

使用ps [选项]命令可以查看目前系统中正在运行的进程,可以搭配| grep使用,常用选项有:

  • -a:显示当前终端所有的进程信息

  • -u:以用户的格式显示进程信息

  • -x:显示后台程序运行的参数

  • -e:显示所有进程

  • -f:按全格式显示

ps -aux 显示内容

[root@master ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.4 125660  4084 ?        Ss   08:17   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    08:17   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   08:17   0:00 [kworker/0:0H]
...
[root@master ~]# ps -aux | grep atd
root       2115  0.0  0.0  25908   956 ?        Ss   10:24   0:00 /usr/sbin/atd -f
root       2197  0.0  0.0 112824   988 pts/0    R+   10:40   0:00 grep --color=auto atd
  • USER:执行用户进程名称

  • PID:进程号

  • %CPU:进程占用 CPU 百分比

  • %MEM:进程占用物理内存百分比

  • VSZ:进程占用虚拟内存大小

  • RSS:进程占用物理内存大小

  • TTY:终端名称

  • STAT:进程状态

    • S:睡眠

    • s:表示该进程是会话的先导进程

    • N-表示进程拥有比普通优先级更低的优先级

    • R:正在运行

    • D:短期等待

    • Z:僵死进程

    • T:被跟踪或者被停止等等

  • START:进程执行的开始时间

  • TIME:进程使用 CPU 的总时间

  • COMMAND:启动进程所使用的命令和参数

ps -ef 显示内容

[root@master ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 08:17 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 08:17 ?        00:00:00 [kthreadd]
root          4      2  0 08:17 ?        00:00:00 [kworker/0:0H]
[root@master ~]# ps -ef | grep sshd
root        962      1  0 08:17 ?        00:00:00 /usr/sbin/sshd -D
root       2134    962  0 10:28 ?        00:00:00 sshd: root@pts/0
root       2136    962  0 10:28 ?        00:00:00 sshd: root@notty
root       2205   2138  0 10:49 pts/0    00:00:00 grep --color=auto sshd
  • UID:用户 id

  • PID:进程 id

  • PPID:父进程 id

  • C:CPU 用于计算执行优先级的因子

    • 数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;

    • 数值越小,表明进程是 I/O 密集型运算,执行优先级会提高;

  • STIME:进程启动的时间

  • TTY:完整的终端名称

  • TIME:进程使用 CPU 的总时间

  • CMD:启动进程所使用的命令和参数

kill 命令终止进程

  • kill [选项] [进程号]:通过进程号终止进程

  • killall [进程名称]:杀死进程及其所有子进程

常用的选项有-9,表示强制终止线程(系统觉得某个程序重要,可能会屏蔽你的kill指令,这时使用选项-9强制终止进程)

pstree 命令查询进程树

使用命令pstree [选项]可以通过树的形式更加直观的查看进程信息,常用选项有:

  • -p:显示进程的 PID

  • -u:显示进程的所属用户

centOS 7 最小系统不包含该命令,需要通过指令下载yum install -y psmisc

[root@master ~]# pstree -p
systemd(1)─┬─NetworkManager(682)─┬─dhclient(769)
           │                     ├─{NetworkManager}(703)
           │                     └─{NetworkManager}(710)
           ├─VGAuthService(666)
           ├─agetty(688)
           ├─atd(2115)
           ├─auditd(624)───{auditd}(625)
           ├─chronyd(671)
           ├─crond(686)
           ......

top 指令动态监控进程

top 与 ps 指令类似,都可以显示正在执行的线程,但是 top 指令可以实时更新。使用top [选项]命令即可实现进程监控,常用选项有:

  • -d [秒数]:指定监控的更新时间,默认是 3s

  • -i:不显示闲置或僵死进程

  • -p [进程号]:指定监控进程的 id 实现对某个进程状态的监控

top 显示内容

[root@master ~]# top
top - 13:08:23 up  4:51,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 109 total,   2 running, 107 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.0 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :   995636 total,   155572 free,   237616 used,   602448 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   586148 avail Mem

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
   963 root      20   0  579196  78916  36504 S  0.7  7.9   1:29.42 dockerd
  2361 root      20   0  162100   2268   1564 R  0.7  0.2   0:04.09 top

第一行内容:

  • 第一个时间:当前时间

  • 第二个时间:系统运行时间

  • 1 user:代表当前有一个用户

  • load average:负载值(三个值平均数若 >0.7,则需要提高性能)

第二行内容:

  • Tasks:系统任务数

  • 2 running:表示有 2 个正在运行的程序

  • 107 sleeping:表示有 107 个程序正在休眠

  • 0 stopped:0 个终止进程

  • 0 zombie:0 个僵死进程

第三行内容展示了当前 CPU 的占用情况

  • us:用户占用百分比

  • sy:系统占用百分比

  • id:空闲 CPU

第四行内容展示了内存占用情况

  • total:总内存

  • free:空闲内存

  • used:已使用内存

  • buff/cache:缓存及缓冲区大小

第五行内容展示了 Swap 分区情况

  • total:总大小

  • free:空闲大小

  • used:已使用大小

  • avail Mem:可获取的大小

top 交互指令

  • P:以 CPU 使用率排序(默认)

  • M:以内存占用率排序

  • N:以 PID 排序

  • q:退出 top

netstat 指令监控网络状态

使用netstat [选项]可以查看系统的网络情况,常用选项有:

  • -an:按一定顺序排列输出

  • -p:显示哪个进程正在调用

使用前需要先安装:yum install net-tools

[root@master ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 master:ssh              192.168.86.1:54932      ESTABLISHED
...

展示内容包括:

  • Proto:协议

  • Recv-Q:接收消息队列

  • Send-Q:发送消息队列

  • Local Address:本地 Linux 地址

  • Foreign Address:外部地址

  • State:连接状态

    • LISTEN:监听

    • ESTABLISHED:已建立连接

    • TIME_WAIT:超时等待

Linux Service 服务管理

服务本质上就是进程,但服务是在后台运行的。服务通常会监听某个端口,等待其他程序的请求,因此又称为守护进程。

Linux 系统中使用systemctl [操作指令] [服务名]指令管理服务,操作指令有:

  • start:开启服务

  • stop:停止服务

  • restart:重启服务

  • status:查询服务状态

  • enable:设置服务开机自启

  • disable:关闭服务开机自启

  • is-enable:查询服务是否开机自启

firewalld 防火墙服务

  • 开放端口:firewall-cmd --permanent --add-port=[端口号/协议]

  • 关闭端口:firewall-cmd --permanent --remove-port=[端口号/协议]

  • 重新载入防火墙,使改动生效:firewall-cmd --reload

  • 查询端口是否开放:firewall-cmd --query-port=[端口/协议]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值