【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 上)

发布时间:2024年01月16日

前提介绍

在线上排查问题时,查询日志、查看系统配置和分析操作系统信息是至关重要的。这些操作可以帮助我们深入了解软件和服务的兼容性,并解决潜在的问题。在本次学习中,我们将介绍并深入学习一些我在处理类似问题时常用的指令。通过掌握这些指令,你将能够更加高效地定位和解决线上问题,提高系统的稳定性和性能。让我们一同进入这个学习过程吧!

主要的指令分为一下几大类
在这里插入图片描述

如何查看Linux操作系统版本

查看内核版本命令

在进行线上问题排查时,了解当前操作系统的版本和发行版信息非常重要。通过查看/proc/version文件和使用uname命令,我们可以获取这些信息。

首先,执行以下命令:

$ cat /proc/version

输出的结果类似于:

Linux version 5.4.0-100-generic (buildd@lcy02-amd64-002) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #113-Ubuntu SMP Thu Feb 3 18:43:29 UTC 2022

从这个信息中,我们可以看到操作系统的版本为2.6.32-358.el6.x86_64,它是在CentOS发行版上运行的。接下来,我们可以执行以下命令获取更详细的信息:

$ uname -a

输出的结果类似于:

Linux idn-prd-m01 5.4.0-100-generic #113-Ubuntu SMP Thu Feb 3 18:43:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

通过这个命令,我们得知了更多的细节,如主机名为192.168.1.10,内核版本为2.6.32-358.el6.x86_64。另外,通过执行uname -r命令,可以直接获取内核版本号,输出结果为2.6.32-358.el6.x86_64

以上这些信息非常有助于我们了解当前操作系统的特性和配置,为问题排查提供基础。请记得在实际应用中,根据具体情况使用这些指令。

查看Linux系统版本

在进行线上问题排查时,了解当前操作系统的版本和发行版信息非常重要。我们可以通过使用不同的命令获取这些信息。

首先,执行以下命令:

$ lsb_release -a

输出的结果类似于:

LSB Version: core-2.0-noarch:core-3.0-noarch:core-2.0-ia32:core-3.0-ia32:graphics-2.0-ia32:graphics-2.0-noarch:graphics-3.0-ia32:graphics-3.0-noarch
Distributor ID: SUSE LINUX
Description: SUSE LINUX Enterprise Server 9 (i586)
Release: 9
Codename: n/a

通过这个命令,我们可以获取到更详细的版本信息,包括发行版名称、描述、发布版本和代号。另外,我们也可以执行以下命令:

$ cat /etc/issue

输出的结果类似于:

Welcome to SUSE LINUX Enterprise Server 9 (i586) - Kernel \r (\l).

此命令会显示欢迎信息,其中包括了操作系统的版本和内核信息。对于Red Hat系列系统,我们可以执行以下命令:

$ cat /etc/redhat-release

输出的结果类似于:

CentOS release 6.4 (Final)

通过这个命令,我们可以直接获取操作系统的版本信息。

在实际应用中,请根据具体情况选择合适的命令使用,这些命令适用于不同的Linux发行版,包括Red Hat、SuSE、Debian等。这些信息对于问题排查非常重要,帮助我们更好地了解当前的操作系统环境。

设置和查看环境变量的方法

在Linux中,查看和设置环境变量是非常常见的操作。本文将介绍一些与环境变量相关的常用命令,希望对你有所帮助。

根据变量的生存周期,Linux变量可以被分为两类:
在这里插入图片描述

  • 永久的变量:这些是在系统配置文件中设置的变量,它们具有永久生效的特性。要修改永久变量,需要编辑相应的配置文件,例如~/.bashrc~/.bash_profile/etc/profile等。修改完成后,变量将在下次登录时自动加载并生效。

  • 临时的变量:这些变量可以通过使用export命令进行声明并设置,它们在当前的Shell会话中有效,但在关闭相应的Shell时会失效。通过export命令设置的变量只在当前Shell会话中可见。当会话结束时或使用unset命令对其进行取消设置,这些变量将不再可用。

区分永久变量和临时变量很重要,这样可以根据不同的需求选择适当的方式来设置和使用变量。永久变量适合于系统级的配置和全局使用,而临时变量适合于临时的、仅在当前Shell会话中有效的需求。

常用的环境变量

在这里插入图片描述

显示环境变量HOME

在Shell中使用echo $HOME命令可以查看当前用户的主目录路径。

$ echo $HOME
/home/wiz-reader

这个命令在Shell中执行,通过使用echo命令和$HOME环境变量来打印当前用户的主目录路径。在示例中,输出的结果显示为/home/wiz-reader,表示当前用户的主目录路径是/home/wiz-reader

设置一个新的环境变量(当前session有效)

使用export命令将一个名为HELLO的环境变量设置为"Hello!"。然后,使用echo命令并通过$HELLO来检索并输出该环境变量的值。

$ export HELLO="Hello!"
$ echo $HELLO
Hello!

在示例中,输出结果显示为Hello!,表示环境变量HELLO的值为Hello!

设置一个新的环境变量(永久有效)

要将变量添加到/etc/profile文件中,以便在Linux下对所有用户生效并具有永久性,请按照以下步骤进行操作:

  1. 使用VI编辑器打开/etc/profile文件:
# vi /etc/profile
  1. 在文件的末尾添加变量的声明和设置。例如,为了添加一个名为CLASSPATH的变量,可以使用如下的语法:
export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib

确保将适当的变量名和值替换为自己所需的内容。在这个例子中,CLASSPATH变量被设置为./JAVA_HOME/lib:$JAVA_HOME/jre/lib

  1. 保存并关闭文件,在vi编辑器中,按下Esc键,然后输入:wq,表示保存并退出。

  2. 为了使更改立即生效,需要运行以下命令:

# source /etc/profile

通过运行source /etc/profile命令,可以立即加载并应用对/etc/profile文件的更改,从而使变量对所有用户生效。

注意,当文件被修改后,也可以在下次用户重新登录时才能使变量生效,但是通过运行source /etc/profile命令可以立即使变量生效,而不需要用户重新登录。

使用env命令显示所有的环境变量

通过查看环境变量,我们可以了解当前Shell会话的配置情况。使用env命令来列出所有的环境变量。输出的结果按照变量名=值的格式显示了多个环境变量。

wiz-reader@root:~$ env
SHELL=/bin/bash
HISTSIZE=1000
LANGUAGE=en_US:
HISTTIMEFORMAT=%F %T wiz-reader
PWD=/home/wiz-reader
LOGNAME=wiz-reader
XDG_SESSION_TYPE=tty
MOTD_SHOWN=pam
HOME=/home/wiz-reader
LANG=en_US.UTF-8
...

chmod命令详细用法

chmod是一个Linux/Unix命令,用于更改文件或目录的权限。它允许用户为文件或目录设置读、写和执行权限,以及其他特殊权限。

chmod指令对所有的使用者具有权限,即任何用户都可以使用该命令来更改文件或目录的权限。这使得用户可以根据需要灵活地更改文件和目录的访问权限,以提高系统的安全性和灵活性。

  • 指令名称chmod
  • 使用权限适用于所有的使用者

注意,为了执行chmod命令,用户必须具有对相应文件或目录的写权限。否则,只有具有合适权限的管理员或文件所有者可以更改文件或目录的权限。

使用方式

chmod [-cfvR] [--help] [--version] mode file... 
参数

chmod命令用于更改文件或目录的权限。其权限设定字串的格式如下:

[ugoa...][[+-=][rwxX]...][,...]

其中:

  • u 表示该文件的拥有者(user)
  • g 表示与该文件的拥有者属于同一个群组(group)的人
  • o 表示其他以外的人
  • a 表示以上三者都包括(all)

符号含义:

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

权限含义:

  • r 表示可读取
  • w 表示可写入
  • x 表示可执行
  • X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行时才生效

其他选项:

  • -c 若该文件权限确实已经更改,则显示其更改动作
  • -f 若该文件权限无法被更改,不显示错误讯息
  • -v 显示权限变更的详细信息
  • -R 对目前目录下的所有文件和子目录进行相同的权限变更,以递归方式逐个变更
  • --help 显示帮助说明
  • --version 显示版本信息
案例

将文件 file1.txt 设为所有用户可读取:

chmod ugo+r file1.txt

将文件 file1.txt 设为所有用户可读取:

chmod a+r file1.txt

将文件 file1.txtfile2.txt 设为对文件拥有者及其所属群体可写入,但其他人不可写入:

chmod ug+w,o-w file1.txt file2.txt

将文件 ex1.py 设定为仅文件拥有者可以执行:

chmod u+x ex1.py

将当前目录下的所有文件和子目录都设为任何人可读取:

chmod -R a+r *

此外,chmod命令也可以使用数字来表示权限,例如 chmod 777 file。其中 a, b, c 分别表示 User、Group 和 Other 的权限。

  • r = 4
  • w = 2
  • x = 1

要表示 rwx 属性,则是 4 + 2 + 1 = 7
要表示 rw- 属性,则是 4 + 2 = 6
要表示 r-x 属性,则是 4 + 1 = 5

chmod a=rwx file

chmod 777 file

效果相同。

chmod ug=rwx, o=x file

chmod 771 file

效果相同。

未完待续

接下来,剩下的指令分析和介绍会在下一个篇文章:【Linux技术专题】「夯实基本功系列」带你一同学习和实践操作Linux服务器必学的Shell指令(排查问题指令 - 下)进行分析和介绍。

文章来源:https://blog.csdn.net/l569590478/article/details/135632463
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。