当前位置:首页 » 操作系统 » linux结构图

linux结构图

发布时间: 2023-10-26 02:37:16

linux快速入门第八章:Shell基础

我们平时所说的 Shell 可以理解为 Linux 系统提供给用户的使用界面。Shell 为用户提供了输入命令和参数并可得到命令执行结果的环境。当一个用户登录 Linux 之后,系统初始化程序 init 就根据 /etc/passwd 文件中的设定,为每个用户运行一个被称为 Shell(外壳)的程序。

确切地说,Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至编写一些程序。

Shell 处在内核与外层应用程序之间,起着协调用户与系统的一致性、在用户与系统之间进行交互的作用。图 1 是 Linux 系统层次结构图,Shell 接收用户输入的命令,并把用户的命令从类似 abed 的 ASCII 码解释为类似 0101 的机器语言,然后把命令提交到系统内核处理;当内核处理完毕之后,把处理结果再通过 Shell 返回给用户。

换句话说:

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell 与其他 Linux 命令一样,都是实用程序,但它们之间还是有区别的。一旦用户注册到系统后,Shell 就被系统装入内存并一直运行到用户退出系统为止;而一般命令仅当被调用时,才由系统装入内存执行。

与一般命令相比,Shell 除了是一个命令行解释器,同时还是一门功能强大的编程语言,易编写,易调试,灵活性较强。作为一种命令级语言,Shell 是解释性的,组合功能很强,与操作系统有密切的关系,可以在 Shell 脚本中直接使用系统命令。大多数 Linux 系统的启动相关文件(一般在 /etc/rc.d 目录下)都是使用 Shell 脚本编写的。

同传统的编程语言一样,Shell 提供了很多特性,这些特性可以使 Shell 脚本编程更为有用,如数据变量、参数传递、判断、流程控制、数据输入和输出、子程序及中断处理等。

说了这么多,其实我们在 Linux 中操作的命令行界面就是 Linux 的 Shell,也就是 Bash,但是我们的图形界面是 Shell 吗?其实从广义讲,图形界面当然也是 Shell,因为它同样用来接收用户的操作,并传递到内核进行处理。不过,这里的 Shell 主要指的是 Bash。

Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。

Shell的分类

目前 Shell 的版本有很多种,如 Bourne Shell、C Shell、Bash、ksh、tcsh 等,它们各有特点,下面简要介绍一下。

最重要的 Shell 是 Bourne Shell,这个命名是为了纪念此 Shell 的发明者 Steven Bourne。从 1979 年起,UNIX 就开始使用 Boume Shell。Bourne Shell 的主文件名为 sh,开发人员便以 sh 作为 Bourne Shell 的主要识别名称。

虽然 Linux 与 UNIX 一样,可以支持多种 Shell,但 Boume Shell 的重要地位至今仍然没有改变,许多 UNIX 系统中仍然使用 sh 作为重要的管理工具。它的工作从开机到关机,几乎无所不包。在 Linux 中,用户 Shell 主要是 Bash,但在启动脚本、编辑等很多工作中仍然使用 Bourne Shell。

C Shell 是广为流行的 Shell 变种。C Shell 主要在 BSD 版的 UNIX 系统中使用,发明者是柏克莱大学的 Bill Joy。C Shell 因为其语法和 C 语言类似而得名,这也使得 UNIX 的系统工程师在学习 C Shell 时感到相当方便。

Bourne Shell 和 C Shell 形成了 Shell 的两大主流派别,后来的变种大都吸取这两种 Shell 的特点,如 Korn、 tcsh 及 Bash。

Bash Shell 是 GNU 计划的重要工具之一,也是 GNU 系统中标准的 Shell。Bash 与 sh 兼容,所以许多早期开发出来的 Bourne Shell 程序都可以继续在 Bash 中运行。现在使用的 Linux 就使用 Bash 作为用户的基本 Shell。

Bash 于 1988 年发布,并在 1995-1996年推出Bash 2.0。在这之前,广为使用的版本是1.14,Bash 2.0增加了许多新的功能,以及具备更好的兼容性。表 2 中详细列出了各版本的具体情况。

注意,Shell 的两种主要语法类型有 Bourne 和 C,这两种语法彼此不兼容。Boume 家族主要包括 sh、ksh、Bash、psh、zsh;C 家族主要包括 csh、tcsh(Bash 和 zsh 在不同程序上支持 csh 的语法)。

本章讲述的脚本编程就是在 Bash 环境中进行的。不过,在 Linux 中除了可以支持 Bash,还可以支持很多其他的 Shell。我们可以通过 /etc/shells 文件来査询 Linux 支持的 Shell。命令如下:

在 Linux 中,这些 Shell 是可以任意切换的,命令如下:

用户信息文件 /etc/passwd 的最后一列就是这个用户的登录 Shell。命令如下:

大家可以看到,root 用户和其他可以登录系统的普通用户的登录 Shell 都是 /bin/bash,也就是 Linux 的标准 Shell,所以这些用户登录之后可以执行权限允许范围内的所有命令。不过,所有的系统用户(伪用户)因为登录 Shell 是 /sbin/ndogin,所以不能登录系统。

笔记:

sh/bash/csh/Tcsh/ksh/pdksh等shell的区别

❷ Linux操作系统由什么组成

Linux系统结构一般有3个主要部分:内核kernel、命令解释层Shell或其他操作环境、实用工具
1.Linux内核

内核是系统的核心,是运行程序和管理磁盘、打印机等硬件设备的核心程序。操作系统向用户提供一个操作界面,它从用户那里接收命令,并且把命令送给内核去执行。

当 Linux安装完毕之后,一个通用的内核就被安装到主机中,这个通用内核能满足绝大部分用户的需求,但普遍适用性内核对具体的某台主机来说,可能有一些并不需要的内核程序将被安装。因此,Linux允许用户根据主机的实际配置定制 Linux的内核,从而有效地简化 Linux内核,提高系统启动速度。
2.Linux Shell

Shell是系统的用户界面,提供了用户与内核进行交互操作的接口。它接收用户输入的命今,并且把它送入内核执行。操作系统在系统内核与用户之间提供操作界面, Linux存在多种操作环境,分别是基于图形界面的集成桌面环境和基于Shell命令行环境。

Shell是一个命令解释器,它解释由用户输入的命令,并且送到内核。Shell编程语言具有普通编程语言的很多特点,如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。

作为命令行操作界面的替代, Linux还提供了像 Windows那样的可视化图形界面X-window的图形用户界面。

3.实用工具
标准的 Linux系统都有配套的实用工具程序,如编辑器、浏览器、办公套件及其它系统管理工具等,用户可以自行编写需要的应用程序。

❸ Linux进程详解

ps是Linux 中最基础的浏览系统中的进程的命令。能列出系统中运行的进程,包括进程号、命令、CPU使用量、内存使用量等。接下来解读一下Linux操作系统的进程和Windows“Ctrl+Alt+delete”直接的差异。

在进行了解进程命令之前需要知道进程的一些状态

ps工具标识进程的5种状态码:

Linux操作系统进程执行的状态转换图如图所示:

下面来看一下 ps命令
ps --help命令可以查看ps命令的使用说明

或者使用 man ps命令 查询ps的详细说明

在 man手册 关于ps的解读中,总结了一下几个参数的含义:

以上的参数是可以拼接使用的,那就了解一些常用的参数组合
ps aux命令

ps -ef命令

查看进程状态这两个是命令是最常用的,使用 ps aux 可以查看进程的详细运行状态等。使用 ps -ef 不仅可以显示自身的PID,也可以显示PPID(父进程)。但是显示不了进程的运行状态

top命令
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器

man手册关于top的解释

关闭进程,重启进程
在上一片文章中 linux的目录结构 里面说过,在目录/etc/init.d/目录下包含许多系统各种服务的启动和停止脚本。假设进程占用内存较大或者进程异常,我们是重启这个进程restart。如下图所示:

我们重启了mysqld这个进程,可以看出进程号已经改变(从15743到15964),说明进程已经重启。

Linux下有3个特殊的进程,idle进程(PID=0), init进程(PID=1)和kthreadd(PID=2)

我们来看一下进程状态[下面是删减版,进程数量太多,列举一部分]

可以看到很多进程的PPID号是1和2。也就是init进程和kthreadd进程。

在使用Windows系统的过程中,都碰到过应用程序卡死的情况。应对此问题,我们一般都是等待失去响应的程序恢复,或者是直接使用任务管理器将其强制关闭,然后再重新打开。

在Linux中,遇到特别耗费资源的进程,当然需要使用 top命令 查看进程占用率高的进程。或者使用 free -m命令 查看内存剩余。假设需要强杀进程来释放空间。我们涉及到Linux中信号📶的知识,在这里简单的描述一下,信号的详解会在接下来的文章里面叙述。
free -m命令查看内存空间

在linux中存在着64种信号
使用 kill -l命令 查看信号列表

在前面说过进程会被这些个信号> (进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号强制停止运行) 那问题就在于如何发信号给这些个进程。
使用kill命令发信号

我们从上面可以看到 mysqld进程被重启了 。

关于Linux的这一块进程的知识还有很多,后面的文章跟大家分享僵尸进程,孤儿进程等等知识,以及守护进程(daemon进程).

❹ linux操作系统的体系结构

看下操作系统原理就懂了,操作系统就是在用户和硬件之间的一个媒介,因此它有两个任务,一个是方便用户操作,一个是管理硬件,所有的操作系统架构都离不开这两个最初的动机,包括 windows、linux、mac等等。 另外内核主要实现的硬件管理,用户操作主要通过shell来完成,比如windows上的cmd、explorer.exe,以及linux上的bash shell、kde、gnome。 其实说白了就是一种思想 ——封装思想,譬如送人一台笔记本,你不用告诉它里面有什么CPU、内存,只要告诉他开机按钮在哪里就好了。 下面有一张linux体系的结构图:

❺ 系统加固之Linux安全加固

Linux系统基本操作

文件结构图及关键文件功能介绍

Linux文件结构

Linux文件结构图

二级目录

| 目录 | 功能 |
| /bin | 放置的是在单人维护模式下能被操作的指令,在/bin底下的指令可以被root与一般账号所使用 |
| /boot | 这个目录只要在放置开机会使用到的文件,包括 Linux核心文件以及开机选单与开机所需配置的文件等等 |
| /dev | 在Linux系统上,任何装置与接口设备都是以文件的形态存在于这个目录当中的 |
| /etc |

系统主要的配置文件几乎都放在这个目录内,例如人员账号密码各种服务的启动档,系统变量配置等

|
| /home | 这个是系统默认的用户家目录(home directory) |
| /lib | /lib放置的则是在开机时会用到的函式库,以及在/lib或/sbin底下的指令会呼叫的函式库 |
| /media | /media底下放置的是可以移出的装置,包括软盘、光盘、DVD等等装置都挂载于此 |
| /opt | 给第三方协议软件放置的目录 |
| /root | 系统管理员(root)的家目录 |
| /sbin | 放置/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需的指令。 |
| /srv | srv可视为[service]的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录 |
| /tmp | 这是让一般使用者或是正在执行的程序暂时放置文件的地方 |

文件

账号和权限

系统用户

超级管理员 uid=0

系统默认用户 系统程序使用,从不登录

新建普通用户 uid大于500

/etc/passwd

/etc/shadow

用户管理

权限管理

解析文件权限

文件系统安全

查看权限:ls -l

修改权限:

**chmod **

** chgrp**

设置合理的初始文件权限

很奇妙的UMASK:

umask值为0022所对应的默认文件和文件夹创建的缺省权限分别为644和755

文件夹其权限规则为:777-022-755

文件其权限规则为:777-111-022=644(因为文件默认没有执行权限)

修改UMASK值:

1、直接在命令行下 umask xxx(重启后消失)

2、修改/etc/profile中设定的umask值

系统加固

锁定系统中多余的自建账号

检查shadow中空口令账号

检查方法:

加固方法:

使用命令passwd -l <用户名> 锁定不必要的账号

使用命令passwd -u <用户名>解锁需要恢复的账号

使用命令passwd <用户名> 为用户设置密码

设置系统密码策略

执行命令查看密码策略设置

加固方法:

禁用root之外的超级用户

检测方法:

awk -F ":" '( 1}' /etc/passwd

加固方法:

** passwd -l <用户名>**

****

限制能够su为root的用户

查看是否有auth required /libsecurity/pam_whell.so这样的配置条目

加固方法:

重要文件加上不可改变属性

把重要文件加上不可改变属性

Umask安全

SSH安全:

禁止root用户进行远程登陆

检查方法:

加固方法:

更改服务端口:

屏蔽SSH登陆banner信息

仅允许SSH协议版本2

防止误使用Ctrl+Alt+Del重启系统

检查方法:

加固方法:

设置账号锁定登录失败锁定次数、锁定时间

检查方法:

修改账号TMOUT值,设置自动注销时间

检查方法:

cat /etc/profile | grep TMOUT

加固方法:

vim /etc/profile

增加

TMOUT=600 无操作600秒后自动退出

设置BASH保留历史命令的条目

检查方法:

cat /etc/profile | grep HISTSIZE

加固方法:

vim /etc/profile

修改HISTSIZE=5即保留最新执行的5条命令

设置注销时删除命令记录

检查方法:

cat /etc/skel/.bash_logout 增加如下行

rm -f $HOME/.bash_history

这样,系统中的所有用户注销时都会删除其命令记录,如果只需要针对某个特定用户,,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件增加相同的一行即可。

设置系统日志策略配置文件

日志的主要用途是 系统审计 、监测追踪和分析。为了保证 Linux 系 统正常运行、准确解决遇到的各种样统问题,认真地读取日志文件是管理员的一项非常重要任务。

UNIX/ Linux 采用了syslog 工具来实现此功能,如果配置正确的 话,所有在主机上发生的事情都会被记录下来不管是好还是坏的 。

检查方法:

cat /etc/profile | grep HISTSIZE

确定syslog服务是否启用

查看syslogd的配置,并确认日志文件是否存在

阻止系统响应任何从外部/内部来的ping请求

加固方法:

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all

热点内容
欧文5的配置是什么 发布:2025-01-22 21:30:23 浏览:108
日志存储数据库 发布:2025-01-22 21:30:07 浏览:474
gulp上传cdn 发布:2025-01-22 21:27:34 浏览:203
emule文件夹 发布:2025-01-22 21:23:23 浏览:981
s7e什么时候推送安卓7 发布:2025-01-22 21:20:59 浏览:203
狐狸的清白脚本分析 发布:2025-01-22 21:19:59 浏览:182
如何破解仿射密码 发布:2025-01-22 21:13:53 浏览:80
百度视频存储 发布:2025-01-22 21:13:11 浏览:168
发吧传媒源码 发布:2025-01-22 21:07:52 浏览:953
shell脚本调用sql脚本 发布:2025-01-22 20:53:51 浏览:428