Linux 常用命令 2

Linux 常用命令 2

  • 1、组和权限管理
    • 1.1、ls 指令
    • 1.2、chown 指令
    • 1.3、chgrp 指令
    • 1.4、chmod 指令
    • 1.5、chown 指令
    • 1.6、chgrp 指令
  • 2、crond 任务调度
    • 2.1、crontab
    • 2.2、时间格式
    • 2.3、脚本无法执行问题
    • 2.4、案例
  • 3、进程管理
    • 3.1、ps 指令
    • 3.2、kill 和 killall 指令
    • 3.3、pstree 指令
    • 3.4、service 服务管理指令
    • 3.5、chkconfig 指令
    • 3.6、top 指令
    • 3.7、netstat 指令
  • 4、软件包管理
    • 4.1、rpm 包管理
    • 4.2、yum 前端软件包管理器

1、组和权限管理

 

linux 中每个文件有所有者、所在组、其他组的概念。一般文件的创建者,就是这个文件的所有者。

1.1、ls 指令

 
ls 指令 可以查看当前目录中的文件情况,通过选项能查看目录中各文件的所有者等信息。

# 以长格式显示当前目录中的文件和目录
ls -l
# 显示当前目录中的所有文件和目录,包括隐藏文件
ls -a
# -d 只列出目录(不递归列出目录内的文件)。
ls -d
# 显示所有文件及目录 (. 开头的隐藏文件也会列出)
ls -lh
# 按照修改时间排序显示当前目录中的文件和目录
ls -t
# -r 倒序显示文件和目录。
ls -r
# 递归显示当前目录中的所有文件和子目录
ls -R
# 显示/etc/passwd文件的详细信息
ls -l /etc/passwd

 

# ls -l 指令示例
[root@hecs-144144 local]# ls -l
total 56
-rwxrwxrwx  1 root root 3832 May 21 00:05 agent_install.sh
drwxrwxrwx. 2 root root 4096 Jul  8  2022 bin

 
在使用 ls -l 命令时,第一列的字符表示文件或目录的类型和权限。其中第一个字符表示文件类型,例如:
 
在这里插入图片描述
 

字符 说明
- 表示普通文件
d 表示目录
l 表示符号链接
c 表示字符设备文件
b 表示块设备文件
s 表示套接字文件
p 表示管道文件

 
在使用 ls -l 命令时,第一列的其余 9 个字符表示文件或目录的访问权限,分别对应三个字符一组的 rwx 权限.
 
在这里插入图片描述
 

字符 说明
r 表示读取权限(read),可以读取、查看
w 表示写入权限(write),可以修改,但是不代表可以删除该文件。删除一个文件的前提条件是,对该文件所在目录有写权限,才能删除该文件。
x 表示执行权限(execute)
- 表示没有对应权限

 
在使用 ls -l 命令时,第一列的其余 9 个字符表示文件或目录的访问权限,前三个字符表示所有者的权限中间三个字符表示所属组的权限后三个字符表示其他用户的权限 。例如:
 
在这里插入图片描述

 

ls -l 命令中,第三列和第四列分别表示文件/目录,所属的所有者和所在组。
 
在这里插入图片描述

 

1.2、chown 指令

 

# chown 指令能修改文件所有者。
chown 用户名 文件名

 

1.3、chgrp 指令

 

# chgrp 指令能修改文件所在组
chgrp 组名 文件名

 

1.4、chmod 指令

 
chmod 指令有两种方式,可以修改文件或目录的权限。

  • 第一种方式:+、-、= 变更权限

    • + 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

    • u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)

# chmod 指令 方式一示例:
chmod u=rwx,g=rx,o=x 文件目录名
chmod o+w 文件目录名
chmod a-x 文件目录名

# 将文件 file1.txt 设为所有人皆可读取
chmod ugo+r file1.txt
# 将目前目录下的所有文件与子目录皆设为任何人可读取 
chmod -R a+r *

 

模式 名字 说明
r 设置为可读权限
w 设置为可写权限
x 执行权限 设置为可执行权限
X 特殊执行权限 只有当文件为目录文件,或其他类型用户有可执行权限时,才将文件权限设置可执行
s setuid/gid 当文件被执行时,根据who参数指定的用户类型设置文件的setuid或者setgid权限
t 粘贴位 设置粘贴位,只有超级用户可以设置该位,只有文件所有者u可以使用该位
  • 第二种方式:通过数字变更权限(八进制语法)
# 下面指令等同于 chmod u=rwx,g=rx,o=x 文件目录名
chmod 751 文件目录名
# 下面指令等同于 chmod ug=rwx,o=x file
chmod 771 file
# 权限 rwx
7 读+写+执行 rwx
6 读+写 rw-
5 读+执行 r-x
4 只读 r–
3 写+执行 -wx
2 只写 -w-
1 只执行 –x
0

1.5、chown 指令

 

# chown 指令用于修改 文件所有者
chown [选项] 新的文件所有者ID 文件目录
# 将 file 的所有者修改为 newowner
chown newowner file

# 将 file 的所有者修改为 newowner,所有组修改为 newgroup
chown newowner:newgroup file
# 将当前前目录下的所有文件与子目录的所有者修改为 runoob,所有组修改为 runoobgroup
chown -R runoob:runoobgroup *

 
chown 常用选项

选项 说明
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-v 显示详细的处理信息
-R 处理指定目录以及其子目录下的所有文件

1.6、chgrp 指令

 

# chgrp 指令,改变文件的所在组
chgrp newgroup file 

 

2、crond 任务调度

 

crond 命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

注意: 新创建的cron任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启cron来马上执行。

任务调度:是指系统在某个时间执行的特定的命令或程序。

任务调度分类:

  • 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等。
  • 个别用户工作:个别用户可能希望执行某些程序。如对mysql数据库的备份。

 

2.1、crontab

 

# crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
# -u user 指设定指定user的时程表,前提是你必须要有其权限(比如说是root), 才能指定他人的时程表。
# 如果不使用 -u user 的话,就是表示设定自己的时程表。
# 语法
crontab [ -u user ] file
# 或
crontab [ -u user ] { -l | -r | -e }

# 终止任务调度
crontab -r 
# 列出当前有哪些任务调度
crontab -l
# 重启任务调度
service crond restart

 

参数说明:

参数 说明
-e 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r 删除目前的时程表
-l 列出目前的时程表
[root@hecs-144144 ~]# crontab -l
no crontab for root

 

2.2、时间格式

 

# f1表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。
# program 表示要执行的程序。
f1 f2 f3 f4 f5 program

# 示例:
# 每一分钟执行一次 /bin/ls:
* * * * * /bin/ls
# 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
# 每两个小时重启一次apache
0 */2 * * * /sbin/service httpd restart
# 每天7:50开启ssh服务
50 7 * * * /sbin/service sshd start

 

*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

 

5个占位符说明

项目 含义 范围
第一个 “*” 一小时当中的第几分钟 0-59
第二个 “*” 一天当中的第几小时 0-23
第三个 “*” 一个月当中的第几天 1-31
第四个 “*” 一年当中的第几月 1-12
第五个 “*” 一周当中的星期几 0-7(0和7都代表星期天)

 

特殊符号说明

特殊符号 含义
* 代表任何时间。比如第一个*表示一个小时中每分钟都执行一次。
, 代表不连续的时间。比如 “0 8,12 * * *” 表示每天8:00 ,12:00 执行。
- 代表连续的时间范围。比如"0 5 * * 1-6" 表示每周1到周6的 5:00 执行。
*/n 代表每隔多久执行一次。比如"*/10 * * * *"表示每隔十分钟执行一次。
  • 当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其余类推。

  • 当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推。

  • 当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推。

  • 当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其余类推。

常用时间格式

执行时间 时间格式
每分钟定时执行一次 * * * * *
每小时定时执行一次 0 * * * *
每天定时执行一次 0 0 * * *
每周定时执行一次 0 0 * * 0
每月定时执行一次 0 0 1 * *
每月最后一天定时执行一次 0 0 L * *
每年定时执行一次 0 0 1 1 *

 

2.3、脚本无法执行问题

 
        如果我们使用 crontab 定时执行脚本无法执行,但如果直接通过命令(如:./test.sh)又可以正常执行,这主要是因为无法读取环境变量的原因。

解决方法:

  • 1、所有命令需要写成绝对路径形式,如: /usr/local/bin/docker

  • 2、在 shell 脚本开头使用以下代码:

    #!/bin/sh
    
    . /etc/profile
    . ~/.bash_profile
    
  • 3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得环境变量生效,例如:

    20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
    

2.4、案例

 
每分钟将系统时间写到 /usr/zim/cron_test.log 文件中

# 第一步: 新建 /usr/zim/crontab_test.sh 文件
[root@hecs-144144 zim]# cat crontab_test.sh 
date>>/usr/zim/cron_test.log

# 第二步:使用 chmod 744 /usr/zim/crontab_test.sh 赋权。  我这里使用的是 777
[root@hecs-144144 zim]# ls -l
total 8
-rwxrwxrwx 1 root root  30 Aug 27 20:14 crontab_test.sh
-rwxrwxrwx 1 root root 116 Aug 27 20:22 cron_test.log

# 第三步:输入 crontab -e 命令 进入后,点击i ,
# 再输入 */1 * * * *   /usr/zim/crontab_test.sh
# 再点击 ESC ,输入 :wq 
# 出现以下即成功创建
[root@hecs-144144 zim]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab

# 第四步:重启任务调度
service crond restart

# 第五步:列出当前有哪些任务调度
[root@hecs-144144 zim]# crontab -l
*/1 * * * *   /usr/zim/crontab_test.sh

# 第六步:查看日志验证
[root@hecs-144144 zim]# tail -f cron_test.log 
Sun Aug 27 20:19:26 CST 2023
Sun Aug 27 20:20:26 CST 2023
Sun Aug 27 20:21:26 CST 2023
Sun Aug 27 20:22:27 CST 2023

# 第七步:删除当前任务
[root@hecs-144144 zim]# crontab -r

# 第八步:再列出当前有哪些任务调度
[root@hecs-144144 zim]# crontab -l
no crontab for root

 

3、进程管理

3.1、ps 指令

 

# 查看系统执行的进程,使用 ps 指令
ps [选项]
# 显示当前终端的所有进程信息
ps -a
# 以用户的格式显示进程信息
ps -u
# 显示root进程用户信息
ps -u root
# 显示后台进程运行参数
ps -x
# 一般来讲使用的参数是  ps -aux
ps -aux

[root@myCentos6 ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.2  0.0  19344  1548 ?        Ss   08:07   0:01 /sbin/init
root          2  0.0  0.0      0     0 ?        S    08:07   0:00 [kthreadd]


# 查找指定进程格式:
# ps -ef 是以全格式显示当前所有的进程 -e 显示所有进程  -f 全格式
ps -ef | grep 进程关键字
# 查找指定进程格式:
ps -aux | grep 进程关键字

 

ps 显示的信息选项

字段 说明
PID 进程识别号
TTY 终端机号
TIME 此进程所消CPU时间
COMMAND 进程执行时的命令行,如果过长会被截断显示
%CPU 占用的cpu百分比
%MEM 占用内存的百分比
VSZ 使用的虚拟内存
STAT 进程的状态:S-休眠,s-该进程是会话的先导进程,N-进程拥有比普通进程优先级更低的优先级,r-运行,D-短期等待,Z-僵死进程,T-被跟踪或被停止等等
START 启动时间

 

3.2、kill 和 killall 指令

 

# kill 指令通过进程号终止进程
kill [选项] 进程号
# -9 表示强迫进程立即停止
kill -9 进程号
# killall 通过进程名称杀死进程,支持通配符
killall 进程名称

 

3.3、pstree 指令

 

# 查看进程树
pstree [选项]
# 常用选项
  -p :显示进程的PID
  -u :显示进程的所属用户

 

3.4、service 服务管理指令

 
在 Centos7.0后,不再使用 service ,而是使用 systemctl

service 服务名 [start|stop|restart|reload|status]
# 查看当前防火墙的状况(state NEW tcp dpt:22 ),关闭、重启防火墙
service iptables status
[root@myCentos6 ~]# service iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination         
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination         
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination 

# 关闭防火墙
service iptables stop
# 启动防火墙
service iptables start

 

3.5、chkconfig 指令

 
通过 chkconfig 指令,可以给每个服务的各个运行级别设置自启动/关闭.

注意:chkconfig 重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效。

# 查看服务 
chkconfig -- list | grep XXX

# chkconfig 服务名 --list
chkconfig iptables --list
[root@myCentos6 ~]# chkconfig iptables --list
iptables       	0:关闭	1:关闭	2:启用	3:启用	4:启用	5:启用	6:关闭

# chkconfig --level 5 服务名 on/off
# 将 sshd 服务在运行级别为5 的情况下,不用自启动
chkconfig --level 5 sshd off

# 当运行级别为5 时,关闭防火墙
chkconfig --level 5 iptables off
# 在所有运行级别下,开启防火墙
chkconfig iptables on

服务的运行级别(runlevel)

Linux 系统有7种运行级别,常用的级别是3 和5

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动

  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录。

  • 运行级别2:多用户状态(没有NFS),不支持网络。

  • 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令模式。

  • 运行级别4:系统未使用,保留

  • 运行级别5:X11控制台,登录后进入图形 GUI模式

  • 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。

 

3.6、top 指令

 
        top 指令是常用来查看系统信息的一个指令,它提供了一个动态的而且是实时的接口,帮助我们去查看系统执行时的进程、线程和系统参数的信息。

# 基本语法
top [选项]
# 指定系统状态更新的时间(每隔10s 自动更新,默认是3s)
top -d 10

[root@myCentos6 ~]# top -d 10
top - 09:54:37 up 18 min,  2 users,  load average: 0.22, 0.27, 0.23
Tasks: 193 total,   1 running, 192 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   2038376k total,   729048k used,  1309328k free,    28480k buffers
Swap:  2097148k total,        0k used,  2097148k free,   376260k cached

   PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                             
 13487 root      20   0  173m 7964 4540 S  0.2  0.4   0:01.40 vmtoolsd                                                                               
 14617 root      20   0  293m  17m  14m S  0.2  0.9   0:01.46 vmtoolsd                                                                                  
    19 root      20   0     0    0    0 S  0.1  0.0   0:01.00 events/0                                                                                  
 14996 root      20   0 15032 1312  940 R  0.1  0.1   0:00.11 top                                                                                       
     1 root      20   0 19348 1544 1228 S  0.0  0.1   0:01.87 init                                                                                      
     2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd                                                                                  
     3 root      RT   0     0    0    0 S  0.0  0.0   0:00.02 migration/0      

 
总体系统信息:

  • uptime:系统的运行时间和平均负载。
  • tasks:当前运行的进程和线程数目。
  • CPU:总体 CPU 使用率和各个核心的使用情况。
  • 内存(Memory):总体内存使用情况、可用内存和缓存。

进程信息:

列头 说明
PID 进程的标识符
USER 运行进程的用户名。
PR(优先级) 进程的优先级。
NI(Nice值) 进程的优先级调整值。
VIRT(虚拟内存) 进程使用的虚拟内存大小。
RES(常驻内存) 进程实际使用的物理内存大小。
SHR(共享内存) 进程共享的内存大小。
%CPU 进程占用 CPU 的使用率。
%MEM 进程占用内存的使用率。
TIME+ 进程的累计 CPU 时间。

 
选项说明

选项 功能
-d <秒数>:指定 top 命令的刷新时间间隔,单位为秒,默认3秒。
-i 不显示闲置(idle)或无用的进程。
-p <进程ID>:仅显示指定进程ID的信息
-c 显示完整的命令行而不截断。
-n <次数>:指定 top 命令运行的次数后自动退出。

 
交互操作说明

操作 功能
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID 排序
q 退出top
k 输入k回车,再输入要结束的进程ID号,可以终止指定的进程。

3.7、netstat 指令

 

# netstat 命令用于显示网络状态。
# 基本语法
netstat [选项]
# 常用选项
  -an : 按一定的顺序排列输出
  -p  :  显示哪个进程在调用
  
[root@hecs-144144 ~]# netstat -anp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      20570/./redis-serve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      461774/sshd         
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  3      [ ]         DGRAM                    11550    1/systemd            /run/systemd/notify
unix  2      [ ]         DGRAM                    11552    1/systemd            /run/systemd/cgroups-agent
unix  2      [ ACC ]     STREAM     LISTENING     108115   25251/mysqld         /var/lib/mysql/mysql.sock
Active Bluetooth connections (servers and established)
Proto  Destination       Source            State         PSM DCID   SCID      IMTU    OMTU Security
Proto  Destination       Source            State     Channel  

# netstat -anp | grep nacos  

 

4、软件包管理

 

4.1、rpm 包管理

 
RPM软件包管理器Red-Hat package Manager,详细记录软件包安装、卸载、升级等变化信息。
 

# 查询已安装的 rpm 列表
rpm -qa
[root@myCentos6 ~]# rpm -qa
system-config-firewall-base-1.2.27-7.2.el6_6.noarch
m17n-db-oriya-1.5.5-1.1.el6.noarch
avahi-ui-0.6.25-15.el6.x86_64

# 查询具体已安装的包
rpm -qa | grep xxx
[root@myCentos6 ~]# rpm -qa | grep  setup
setup-2.8.14-20.el6_4.1.noarch
setuptool-1.19.9-4.el6.x86_64
cryptsetup-luks-libs-1.2.0-11.el6.x86_64
system-setup-keyboard-0.7-4.el6.x86_64

# 查询软件包是否安装
rpm -q 软件包名
# 查询软件包信息
rpm -qi 软件包名

[root@myCentos6 ~]# rpm -qi setup
Name        : setup                        Relocations: (not relocatable)
Version     : 2.8.14                            Vendor: CentOS
Release     : 20.el6_4.1                    Build Date: 2013年10月02日 星期三 17时06分19秒
Install Date: 2023年08月24日 星期四 01时10分42秒      Build Host: c6b10.bsys.dev.centos.org
Group       : System Environment/Base       Source RPM: setup-2.8.14-20.el6_4.1.src.rpm
Size        : 666477                           License: Public Domain
Signature   : RSA/SHA1, 2013年10月02日 星期三 19时15分22秒, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : https://fedorahosted.org/setup/
Summary     : A set of system configuration and setup files
Description :
The setup package contains a set of important system configuration and
setup files, such as passwd, group, and profile.

# 查询文件所属的软件包 例子:rpm -qf /etc/paswd
rpm -qf 文件全路径名 

# 卸载 rpm 包 基本语法(如果其他软件依赖当前需要卸载的软件包,卸载时会产生错误信息)
rpm -e 包名称
# 卸载示例:卸载火狐浏览器
rpm -e firefox

# 安装 rpm 包,基本语法
rpm -ivh 包的全路劲名称
# 参数说明
  i : install 安装
  v : verbose 提示
  h : hash 进度条
  
# 安装 firefox rpm包示例
rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm

 

4.2、yum 前端软件包管理器

 
yum 是一个shell 前端软件包管理器,yum 管理的前提是可以联网。
 

# 查询 yum 服务器是否有需要安装的软件列表
yum list | grep xx
# 示例:
yum list | grep firefox
# 下载安装指定的 yum 包
yum install xxx

 
 
 
 
 
 
 
 
 
.

你可能感兴趣的:(Linux,Crond任务调度,进程管理,权限,chmod,chown,软件包管理,rpm)