Linux系统管理实用指南(上)
在Linux系统管理中,掌握一系列实用的命令和操作技巧至关重要。本文将详细介绍Linux系统管理中的多个方面,包括进程管理、用户管理、文件系统管理、日志处理、系统关机重启、用户账户管理以及任务调度等内容。
1. 进程管理
在Linux中,有时需要终止某个脚本或进程。可以使用如下命令来终止脚本:
kill -9 9753
需要注意的是,要终止一个进程,你要么是该进程的所有者(即启动该进程的用户),要么是超级用户,超级用户可以终止任何进程。
2. 用户管理
有三个Linux命令在管理用户的数据库管理系统(DBMS)和操作系统(OS)会话方面特别有用:
who
、
finger
和
write
。
2.1
who
命令
根据Linux发行版的不同,
who
命令可以提供有关登录用户的信息,例如:
- 用户会话上次活跃以来的经过时间
- 用户shell的进程ID
- 用户的名称
若只想了解当前哪些用户已连接到服务器,可输入以下命令:
who
使用
who
命令的
-q
选项,只会显示当前登录用户的名称和总数。
2.2
finger
命令
finger
命令用于监控Linux系统上用户的活动。默认情况下,对于每个登录用户,
finger
会显示以下信息:
- 登录名
- 终端写入状态,即是否允许通过用户登录的机器进行写入操作
- 空闲时间,即用户当前会话未执行任何操作的时间
- 登录时间,即用户建立当前会话的日期和时间
- 用户的主目录和登录shell
也可以通过向
finger
命令提供用户的登录名来查看特定用户的信息。若要查看当前登录到服务器的所有用户及其正在进行的活动,可使用以下命令:
finger
2.3
write
命令
如果某个用户与DBMS相关的进程占用了过多的系统资源,当然可以终止这些进程。但在未事先通知相关用户的情况下这样做,很可能会招致用户的不满。可以使用
write
命令通知用户即将发生的事情。
若知道某个用户的登录用户名或其连接的终端,就可以使用
write
命令向该用户发送消息。例如,要向Linux服务器的系统管理员发送消息,可按以下步骤操作:
1. 在shell提示符下,输入:
write root
然后按回车键。
2. 在下一行输入消息,根据需要使用多行,每行之间按回车键分隔。
3. 完成消息输入后,再按一次回车键。
4. 在出现的空白行上,按组合键
<CTRL>D
结束
write
会话并返回shell提示符。
3. 文件系统管理
任何数据库管理系统的高效运行,可能比其他应用程序更依赖于良好管理的文件存储和输入/输出(I/O)。以下是一些Linux文件系统管理命令:
fsck
、
df
、
mount
和
umount
。
3.1
fsck
命令
fsck
用于监控和修复Linux文件系统,可处理操作系统识别为包含字符或块特殊文件的任何存储设备上的文件系统。这意味着
fsck
可以帮助
/dev
目录中列出的任何存储介质相关的文件系统保持健康。
如果
fsck
发现文件系统正常,它只会报告:
- 文件系统包含的文件数量
- 文件系统中已使用和空闲的块数量
如果
fsck
检测到文件系统存在问题,它会提供修复文件系统的方法。
在大多数Linux系统中,机器启动时
fsck
会自动运行,并且在机器启动后会按预定义的时间间隔运行。
fsck
只能由root用户从命令行运行。不过,在某些Linux发行版中,除非机器处于单用户模式,否则即使是root用户也不能从命令行运行
fsck
。
可以通过以下几种方式指定要
fsck
检查的文件系统:
- 指定设备名称,如
/dev/hda1
- 指定挂载点,如
/home
- 提供ext2卷标,如
LABEL=root
假设处于单用户模式,可以使用以下类似命令以交互方式检查所有文件系统,即有机会确认或放弃每次检查:
fsck -V
也可以使用以下命令检查文件系统是否适合挂载:
fsck -m
其他有用的
fsck
选项如下表所示:
| 选项 | 作用 |
| ---- | ---- |
|
-A
| 使
fsck
尝试一次性检查所有文件系统 |
|
-N
| 仅显示
fsck
会执行的操作,但不实际执行 |
|
-R
| 当使用
-A
选项检查所有文件系统时,跳过检查根文件系统 |
fsck
会返回一个退出代码,该代码表示检查时可能存在的以下任何条件的总和:
| 退出代码 | 含义 |
| ---- | ---- |
| 0 | 无错误 |
| 1 | 文件系统错误已纠正 |
| 2 | 系统应重启 |
| 3 | 文件系统错误未纠正 |
| 8 | 操作员错误 |
| 16 | 语法错误 |
| 128 | 库错误 |
自然,返回代码为0是最理想的情况。
3.2
df
命令
df
用于显示文件系统可用的空闲磁盘块和空闲索引节点的数量。
df
从超级块或多个超级块中保存的计数获取统计信息。如果不向
df
命令指定任何参数,它将简单报告所有已挂载文件系统的可用空间。
要报告和分类整个Linux机器上的可用磁盘空间,可使用以下命令:
df
执行该命令后,对于平台上配置的每个文件系统,输出将包含类似以下的一行:
/home (/dev/vg00/lvol4): 359278 blocks 78969 i-nodes
当然,不同机器上的数字和文件系统名称会有所不同。
要报告特定文件系统内的可用磁盘空间,可使用类似以下的命令:
df /var
需要注意的是,如果将路径名作为参数传递给
df
,它将报告包含这些路径的文件系统的信息,而不是这些路径本身的信息。如果将未挂载的文件系统的名称作为参数传递给
df
,它将报告该未挂载文件系统最后已知的可用空间量。
3.3
mount
和
umount
命令
当Linux系统启动时,它会使所有基本文件系统可用。但对于Linux来说,基本文件系统通常仅包括硬盘上的文件系统。要使诸如CD - ROM或软盘等设备上的文件系统可用,必须将这些驱动器与整个文件系统的某个区域关联起来,在Linux术语中,就是必须进行挂载。
-
mount命令 :假设需要使用vi编辑软盘上的文本文件,并且该软盘是在Microsoft操作系统下格式化并创建文本文件的,这对Linux来说并不构成问题。可以使用以下类似命令使软盘及其上的文件可用:
mount /dev/fd0 /mnt/floppy
此语法假设:
- 3.5英寸、1.44MB软盘驱动器的正确标识为
/dev/fd0
- Linux文件系统中有一个名为
/mnt
的挂载点
-
/mnt
下有一个名为
/floppy
的子目录
-
umount命令 :假设完成了编辑,不再希望软盘或软盘驱动器可用。要防止使用该驱动器,可输入以下类似命令:
umount /dev/fd0
需要注意的是,要使用
umount
命令阻止访问驱动器,必须确保介质(无论是软盘还是CD - ROM)仍在驱动器中,并且当前目录不是访问该驱动器时所在的目录。换句话说,可能需要使用
cd
命令更改当前目录才能使用
umount
命令。
4. 日志处理
Linux和Linux DBMS日志文件的增长速度可能接近指数级。如果不清理这些日志,随着时间的推移,可能会导致服务器性能下降。以下是一些简单的操作系统命令,可以帮助避免这种情况的发生。
4.1
ls
命令
使用
ls
命令的
-l
选项可以报告单个文件或文件组的大小。例如,如果需要确定名为
somedb.log
的DBMS日志文件的大小,可以使用以下命令(如果文件位于当前目录之外,需要提供完整的路径名):
ls -l somedb.log
如果需要了解所有日志文件的大小,可以使用以下语法:
ls -l *.log
4.2
wc
命令
作为监控DBMS或任何其他日志文件增长的另一种方法,可以使用
wc
命令(即字数统计命令)。要确定给定文件中的字节数,可以使用以下类似语法:
wc -c some_file
要了解文件包含的单词数,可以使用以下命令:
wc -w a_file
要了解文件包含的行数,可以使用以下命令:
wc -l another_file
要同时查看
wc
提供的所有信息,可以使用以下语法:
wc onemore_file
需要注意的是,
wc
不仅可以处理文本文件,例如,它可以毫无问题地处理可执行文件。但在大多数情况下,以这种方式使用
wc
意义不大。
4.3
head
命令
假设希望保留数据库日志文件的前50行,然后删除该文件。在这种情况下,可以使用
head
命令将这些行转移到另一个文件名。可以告诉
head
要查看或转移的行数甚至字符数。
head
命令的语法如下表所示:
| 参数 | 作用 |
| ---- | ---- |
|
-c
| 指定要显示的字节数 |
|
-l
| 指定要显示的行数 |
|
-n x
| 指定要显示的字符数或行数 |
如果不提供数字,
head
默认显示10个字符或10行。以下类似命令可保留我们假设的数据库日志文件的前50行,为删除该文件做准备:
head -l -n50 db_log > db_log_new
需要注意的是,
head -l -n some_integer
和
head -some_integer
这两种格式产生的结果相同。
4.4
tail
命令
tail
命令可以看作是
head
命令的镜像,它从文件的末尾复制内容,或者使用适当的语法,从文件的任何区域复制内容。
tail
命令的语法如下表所示:
| 参数 | 作用 |
| ---- | ---- |
|
-b number
| 指定要复制的块数,从文件底部开始复制 |
|
-c number
| 指定要从文件底部复制的字节数 |
|
number
| 指定
tail
必须复制的实际字符数或行数 |
以下是一些使用
tail
命令的示例:
- 查看文件的最后13行:
tail -13 bakersdozen
- 显示文件的最后100个字符:
tail -c 100 century
- 复制文件的最后9个块:
tail -b 9 innings
5. 系统关机重启前通知用户
在关闭Linux数据库服务器之前,应该让用户知道即将发生的事情。最有效的方法之一是使用操作系统命令
wall
。
wall
命令与
write
命令类似,但
wall
会将相同的消息分别发送给所有当前登录的用户。因此,它是通知用户即将关机等情况的理想工具。例如,可以使用类似以下命令提前通知用户系统即将关闭。
6. 系统关机和重启
以下关于关闭Linux服务器的建议来自软件开发领域的权威机构欧洲核子研究组织(CERN,HTTP和HTML等技术的诞生地)。
要从本地控制台关闭机器,请按以下步骤操作:
1. 同时按下
Ctrl
、
Alt
和
F6
键。
2. 此时应该会看到登录提示。以root用户身份登录,然后执行以下命令:
/sbin/halt
也可以通过telnet执行此序列。需要注意的是,正如CERN和许多其他人所警告的那样,绝不要在未先停止Linux机器的情况下直接关闭电源。
或者,可以使用以下
shutdown
命令的任何语法来优雅地停止Linux系统:
| 语法 | 作用 |
| ---- | ---- |
|
shutdown -h +6 Server coming down in 6 minutes; log off. please.
| 在指定的分钟数内关闭系统,并在关闭前显示指定的消息 |
|
shutdown -r now
| 立即关闭并重启系统 |
|
shutdown now
| 立即关闭系统,即进入单用户模式或运行级别1 |
7. 用户账户管理
7.1 添加用户账户
向Linux系统添加新用户的最简单方法是使用
adduser
命令。但要使用此命令,必须以超级用户身份登录。假设已经以超级用户身份登录,可以使用以下类似命令:
adduser user_name
Linux会提示输入为指定用户设置账户所需的所有信息。
7.2 Linux密码要求
在大多数Linux实现中,密码必须满足以下条件:
- 长度至少为六个字符
- 字符来自ASCII字符集,字母仅来自英文字母表
- 字符组合必须至少包含两个字母(大写或小写)和至少一个数字或特殊字符(如
%
或
.
)
- 必须设置密码更改间隔(这是系统特定的)
- 必须设置密码的有效期(这是系统特定的)
在启用了密码有效期的Linux系统中,密码在预定义的时间段后会过期,密码过期的账户将被锁定,直到系统管理员重新启用该账户并为其定义新密码。
7.3 修改用户账户(密码)
通常,修改用户账户意味着更改该用户的密码。可以使用以下类似命令:
passwd user_name
Linux会提示输入现有密码、新密码以及确认新密码。
7.4 用户配置文件
Linux系统提供了两种定义用户配置文件的方法:
- 系统范围的配置文件,存储在
/etc/profile
文件中
- 用户特定的配置文件,存储在每个用户主目录中名为
.profile
的文件中
无论是全局(即系统范围)的还是用户特定的配置文件,其内容都会在首次登录Linux时执行,并且仅在此时执行。此外,系统范围配置文件指定的会话特性可以被用户特定配置文件中定义的特性覆盖。
- 修改系统范围的配置文件 :要对系统范围的配置文件进行任何更改,必须:
- 以超级用户身份登录
-
对
/etc/profile文件具有写入权限
如果满足以上两个条件,可以按以下步骤对系统范围的配置文件进行更改:
1. 使用任何文本编辑器打开
/etc/profile
文件。
2. 导航到控制要更改的特性的记录,并进行更改。
3. 保存更改并退出编辑器。
需要注意的是,Linux还提供了另一种类似的文件,称为rc文件,它定义的是程序的初始功能特性,而不是用户会话的特性。其中最重要的
.bashrc
文件,为许多重要Linux实现的默认基于文本的界面Bourne shell赋予了启动特性。
- 修改用户特定的配置文件 :要更改用户特定配置文件中的任何信息,必须:
- 以超级用户或要修改其配置文件的用户身份登录
- 对要更改内容的文件具有写入权限
如果满足以上两个条件,可以按以下步骤操作:
1. 使用任何文本编辑器打开相应的
.profile
文件。
2. 导航到控制要更改的特性的记录,并进行更改。
3. 保存更改并退出编辑器。
8. 任务调度
Linux提供了多种任务调度方法,其中最灵活和强大的是使用
cron
实用程序。
8.1 使用
cron
调度任务
理解
cron
意味着理解其调度文件
crontab
,该文件通常位于
/etc
目录中。一个典型(尽管是假设)的
crontab
文件的摘录如下:
0 12 * * 1-4 /usr/flash/new_script
0 14 * * 2-6 /usr/kg/another_script
0 23 * * 3-5 /home/dbase/sql some_query
crontab
文件中每个记录的六个冒号分隔字段的含义如下表所示:
| 字段 | 含义 |
| ---- | ---- |
| 第一个 | 任务调度的分钟数,必须指定为0到59之间的整数 |
| 第二个 | 任务调度的小时数,必须指定为0到23之间的整数,其中0表示午夜 |
| 第三个 | 任务调度的月份日期,必须指定为1到31之间的整数 |
| 第四个 | 任务调度的月份,必须指定为1到12之间的整数 |
| 第五个 | 任务调度的星期几,必须指定为0到6之间的整数,其中0表示星期日 |
| 第六个 | 在前面五个字段指定的时间执行的命令 |
根据这些含义,以下行:
0 12 * * 1-4 /usr/flash/new_script
将在每个月的每一天的中午12点,只要当天是星期一到星期四,就会运行指定的shell脚本。
需要注意的是,与许多重要的Linux系统文件一样,
crontab
文件只包含ASCII文本,因此如果具有适当的访问权限,可以使用任何Linux文本编辑器进行编辑。编辑
crontab
实际上就是在调度任务,因为在大多数Linux实现中,
cron
实用程序作为守护进程在后台运行。因此,无需也无法从命令行启动
cron
。
8.2 使用
at
调度任务
要仅运行一次批处理作业,可以使用Linux命令
at
。例如,可以使用以下类似命令序列随机监控清晨的登录尝试:
at 12:45 tomorrow
who -u > next_day_log
<CTRL> D
at 12:57 next week
who -u > next_week_log
<CTRL> D
这一系列命令告诉Linux:
- 为明天凌晨12:45安排一个任务,无论那天是星期几或具体日期
- 在该时间运行
who
命令,并将输出放入当前目录中的指定文件中
- 为从今天起一周后的凌晨12:57安排一个任务,无论那天是星期几或具体日期
- 在该时间运行
who
命令,并将输出放入当前目录中的指定文件中
8.3 使用
batch
调度任务
Linux命令
batch
指示操作系统在其工作负载允许的情况下,即在后台运行某个任务,即使启动
batch
的用户注销也不受影响。例如,假设在即将下班前几分钟收到一个非常大的文件需要排序,可以使用以下类似命令组来解决这个潜在的棘手问题:
batch
通过掌握上述这些Linux系统管理的命令和操作技巧,能够更高效地管理Linux系统,确保系统的稳定运行和数据的安全。
Linux系统管理实用指南(下)
9. 总结与回顾
在前面的内容中,我们详细介绍了Linux系统管理的多个重要方面,包括进程管理、用户管理、文件系统管理、日志处理、系统关机重启、用户账户管理以及任务调度等内容。下面通过一个简单的流程图来回顾一下这些管理操作的主要流程:
graph LR
A[进程管理] --> B[用户管理]
B --> C[文件系统管理]
C --> D[日志处理]
D --> E[系统关机重启]
E --> F[用户账户管理]
F --> G[任务调度]
这个流程图展示了各个管理方面之间的大致顺序关系,当然在实际的系统管理中,这些操作可能会根据具体情况交叉进行。
10. 各管理方面的关联与应用场景
10.1 关联关系
这些管理方面之间存在着紧密的关联。例如,在进行用户管理时,可能会涉及到进程管理。如果某个用户的进程占用过多资源,就需要使用进程管理的
kill
命令来终止该进程。同时,用户账户的添加和修改可能会影响到用户配置文件的管理,因为不同的用户可能有不同的配置需求。
文件系统管理与日志处理也有密切关系。日志文件存储在文件系统中,当文件系统出现问题时,可能会影响日志文件的正常存储和读取。而日志文件的增长情况又可以通过日志处理的命令进行监控和管理,以避免因日志文件过大而影响系统性能。
系统关机重启与任务调度也相互关联。在关机或重启系统之前,需要确保所有正在运行的任务都已经停止或妥善处理,否则可能会导致数据丢失或系统故障。而任务调度则可以在系统重启后自动执行一些必要的任务,保证系统的正常运行。
10.2 应用场景
-
日常系统维护
:在日常的系统维护中,需要定期检查文件系统的健康状况,使用
fsck命令进行文件系统的检查和修复。同时,监控日志文件的大小,使用ls和wc命令来查看日志文件的大小和内容,及时清理不必要的日志文件,以节省磁盘空间。 -
用户管理与权限控制
:当有新用户加入系统时,需要使用
adduser命令添加用户账户,并设置合适的密码。同时,根据用户的职责和需求,修改用户的配置文件,确保用户只能访问其有权限访问的资源。在发现某个用户的进程占用过多资源时,使用write命令通知用户,并在必要时使用kill命令终止该进程。 -
系统升级与重启
:在进行系统升级或重启之前,使用
wall命令通知所有登录用户,让他们做好准备。然后按照正确的步骤进行关机或重启操作,如使用shutdown命令。在系统重启后,检查任务调度是否正常,确保一些必要的任务能够自动执行。
11. 常见问题及解决方法
11.1 文件系统检查问题
在使用
fsck
命令检查文件系统时,可能会遇到一些问题。例如,在某些Linux发行版中,必须在单用户模式下才能运行
fsck
命令。如果在非单用户模式下尝试运行,可能会收到错误提示。解决方法是在系统启动时进入单用户模式,然后再运行
fsck
命令。
另外,如果
fsck
检测到文件系统存在严重问题,可能无法自动修复。这时需要仔细查看
fsck
的输出信息,根据具体情况采取相应的措施,如手动修复一些文件或重新格式化文件系统。
11.2 任务调度问题
在使用
cron
或
at
进行任务调度时,可能会遇到任务无法按时执行的问题。这可能是由于
crontab
文件配置错误、权限不足或系统时间设置不正确等原因导致的。解决方法是检查
crontab
文件的语法是否正确,确保任务的执行时间和命令都设置正确。同时,检查用户是否有执行该任务的权限,以及系统时间是否准确。
如果使用
at
命令调度的任务无法执行,可能是由于
atd
服务没有启动。可以使用以下命令启动
atd
服务:
systemctl start atd
并使用以下命令设置
atd
服务为开机自启:
systemctl enable atd
11.3 用户账户与权限问题
在添加或修改用户账户时,可能会遇到密码设置不符合要求的问题。根据Linux系统的密码要求,密码必须满足一定的长度、字符组合等条件。如果密码设置不符合要求,系统会提示错误。解决方法是按照密码要求重新设置密码。
另外,用户可能会遇到无法访问某些资源的问题,这可能是由于权限设置不正确导致的。可以使用
chmod
和
chown
命令来修改文件或目录的权限和所有者,确保用户有足够的权限访问所需的资源。
12. 高级技巧与扩展应用
12.1 自动化脚本编写
为了提高系统管理的效率,可以编写自动化脚本。例如,可以编写一个脚本来定期检查文件系统的健康状况、清理日志文件和监控用户进程。以下是一个简单的脚本示例,用于检查文件系统并清理日志文件:
#!/bin/bash
# 检查文件系统
fsck -A -N
# 清理日志文件
find /var/log -type f -name "*.log" -size +10M -exec rm {} \;
将上述脚本保存为一个文件,如
system_check.sh
,然后使用
chmod +x system_check.sh
命令赋予脚本执行权限。可以使用
cron
命令将该脚本设置为定期执行,例如每天凌晨2点执行:
0 2 * * * /path/to/system_check.sh
12.2 远程管理
在实际的系统管理中,可能需要对远程的Linux服务器进行管理。可以使用
ssh
命令远程登录到服务器,然后执行各种管理操作。例如,要远程登录到IP地址为
192.168.1.100
的服务器,可以使用以下命令:
ssh root@192.168.1.100
登录后,就可以像在本地一样执行各种系统管理命令。另外,还可以使用
scp
命令在本地和远程服务器之间传输文件。例如,将本地的
test.txt
文件复制到远程服务器的
/root
目录下,可以使用以下命令:
scp test.txt root@192.168.1.100:/root
13. 持续学习与实践
Linux系统管理是一个不断发展和变化的领域,新的技术和工具不断涌现。为了更好地掌握Linux系统管理技能,需要持续学习和实践。可以通过阅读相关的技术书籍、文章和论坛,了解最新的系统管理知识和技巧。同时,在实际的系统环境中进行实践操作,不断积累经验,提高自己的系统管理能力。
建议定期进行系统管理的演练,模拟各种可能的情况,如系统故障、用户异常等,然后使用所学的知识和技能进行处理。通过不断的实践和总结,能够更加熟练地应对各种系统管理问题。
通过深入学习和掌握这些Linux系统管理的知识和技能,能够更加高效地管理Linux系统,确保系统的稳定运行和数据的安全。同时,不断学习和实践新的技术和方法,能够适应不断变化的系统管理需求。
超级会员免费看
1380

被折叠的 条评论
为什么被折叠?



