学习啦>学习电脑>操作系统>Linux教程>

电脑实用Linux系列教程

怀健分享

本系列教程将完整的讲解整个Linu__相关的知识,这是楼主学完兄弟连的Linu__教程之后重新对Linu__知识体系的整理。下面就让小编带你去看看电脑实用Linu__系列教程,希望能帮助到大家!

整理了Linu__全套自学教程!

为什么要用Linu__?

Linu__极其强大,可以让聪明人干任何他们想干的事情。

Linu__ 从诞生之日起,它的工作方式就比 Windows 的先进。

Linu__ 属于能勇敢面对符号的人。只有符号才能完全操纵计算机。

欧美发达国家的传统科研单位、黑客们从几十年前就从事这些行当了,使用Linu__/Uni__的习惯延续至今。

鼠标虽然是很好的工具,但是它的表达能力是有限的。

你不可能光用鼠标就让电脑完全明白你的意思,它毕竟只有3个按钮。所以我们虽然很喜欢鼠标,但是却不能完全依赖它。

熟练的Linu__黑客可以很快敲出一行命令,组合系统里面的各种工具来完成一个任务。很多工具本身就是一个黑客工具,压根就没考虑windows用户们,在图形界面下用起来反而非常麻烦。图形界面的优势是数据展示方式多样,劣势是从使用者的角度看,它混淆了数据展示和数据本身。

在Linu__大量工作抽象地看是这样的:

把一堆数据扔进一个程序,得到另一堆数据,再扔进另一个程序……

不用关心数据展示,它要的是数据本身。

什么是 Windows 能干而 Linu__ 干不了的事情?

“Windows 能干而 Linu__ 干不了的事情,那就是不需要干的事情。”

几乎所有科学计算程序,EDA 程序,高性能图像处理程序都不是基于 Windows 的。

消除学计算机很难的幻觉,勇敢的拿起像 bash, FVWM, Te__, VIM, Emacs, Mutt ……这样强大的程序,勇敢的面对符号。不要再埋怨“Linu__ 为什么不能像 Windows 那样”,不要再浪费时间试用这样那样的程序,不要再忙着升级。你需要理解 UNI__ 的工作方式,因为那是大多数科学家的工作方式。

Linu__入门教程:Linu__开机启动过程浅析

asic Input/Output System),完成一些系统的完整性检查、搜索、

加载并且执行引导程序(boot loader), 它在软盘,CD-ROM或者硬盘上寻找引导程序。你可以在

系统启动时按下键盘(通常是F12或者F2,但是因系统而异)来修改启动顺序

一旦引导程序被检测到并且加载到内存,BIOS会将控制权移交给它

MBR

MBR表示主引导记录(Master Boot Record)

用于加载并执行GRUB

GRUB

GRUB是多重引导管理器(GRand Unified Bootloader)

执行 /etc/grub.conf, 加载内核镜像

vim /etc/grub.conf

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.__pm.gz

hiddenmenu

title CentOS 6 (2.6.32-504.el6.__86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-504.el6.__86_64 ro root=/dev/mapper/vg_ddz-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_ddz/lv_root crashkernel=128M.UTF-8 rd_LVM_LV=vg_ddz/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet

initrd /initramfs-2.6.32-504.el6.__86_64.img

Kernel

执行内核首个进程 /sbin/init, 进程号为1, 是接下来所有其它进程的父进程

initrd表示Initial RAM Disk

initrd被内核用作临时的根目录,直到内核启动完成并且真正的根目录挂载成功。

它也包括一些编译好的必要的驱动程序,这些程序有助于它访问硬盘和其他硬件

Init

执行 /etc/inittab, 来确定启动级别

vim /etc/intttab

# Default runlevel. The runlevels used are:

# 0 - halt (Do NOT set initdefault to this)

# 1 - Single user mode

# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)

# 3 - Full multiuser mode (终端模式)

# 4 - unused

# 5 - __11(图形用户界面)

# 6 - reboot (Do NOT set initdefault to this)

#

id:5:initdefault:执行 /etc/rc.d/rc.sysinit, 来启动系统进程,比如说NetWork

RunLevel

执行启动级别相对应的一系列系统服务

对应启动级别的目录如下

ll /etc/rc.d/

drw__r-__r-__. 2 root root 4096 11月 29 09:49 rc0.d

drw__r-__r-__. 2 root root 4096 11月 29 09:49 rc1.d

drw__r-__r-__. 2 root root 4096 3月 10 17:18 rc2.d

drw__r-__r-__. 2 root root 4096 3月 10 17:18 rc3.d

drw__r-__r-__. 2 root root 4096 3月 10 17:18 rc4.d

drw__r-__r-__. 2 root root 4096 3月 10 17:18 rc5.d

drw__r-__r-__. 2 root root 4096 11月 29 09:49 rc6.d

RunDefinition

最后执行 /etc/rc.d/rc.local, 来运行自定义的服务

vim /etc/rc.d/rc.local

1 #!/bin/sh

2 #

3 # This script will be e__ecuted __after__ all the other init scripts.

4 # You can put your own initialization stuff in here if you don't

5 # want to do the full Sys V style init stuff.

6

7 touch /var/lock/subsys/local

8 if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

9 echo never > /sys/kernel/mm/transparent_hugepage/enabled

10 fi

11 if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

12 echo never > /sys/kernel/mm/transparent_hugepage/defrag

13 fi

14

15 /bin/bash /usr/local/apps/kylin/bin/kylin.sh start

其中第15行为自定义启动脚本

Final

Linu__终端神器tmu__使用教程

一、Tmu__ 是什么?

1.1 会话与进程

命令行的典型使用方式是,打开一个终端窗口(terminal window,以下简称"窗口"),在里面输入命令。用户与计算机的这种临时的交互,称为一次"会话"(session) 。

会话的一个重要特点是,窗口与其中启动的进程是连在一起的。打开窗口,会话开始;关闭窗口,会话结束,会话内部的进程也会随之终止,不管有没有运行完。

一个典型的例子就是,SSH 登录远程计算机,打开一个远程窗口执行命令。这时,网络突然断线,再次登录的时候,是找不回上一次执行的命令的。因为上一次 SSH 会话已经终止了,里面的进程也随之消失了。

为了解决这个问题,会话与窗口可以"解绑":窗口关闭时,会话并不终止,而是继续运行,等到以后需要的时候,再让会话"绑定"其他窗口。

1.2 Tmu__ 的作用

Tmu__ 就是会话与窗口的"解绑"工具,将它们彻底分离。

(1)它允许在单个窗口中,同时访问多个会话。这对于同时运行多个命令行程序很有用。

(2) 它可以让新窗口"接入"已经存在的会话。

(3)它允许每个会话有多个连接窗口,因此可以多人实时共享会话。

(4)它还支持窗口任意的垂直和水平拆分。

类似的终端复用器还有 GNU Screen。Tmu__ 与它功能相似,但是更易用,也更强大。

二、基本用法

2.1 安装

Tmu__ 一般需要自己安装。

# Ubuntu 或 Debian$ sudo apt-get install tmu__# CentOS 或 Fedora$ sudo yum install tmu__# Mac$ brew install tmu__

2.2 启动与退出

安装完成后,键入tmu__命令,就进入了 Tmu__ 窗口。

$ tmu__

上面命令会启动 Tmu__ 窗口,底部有一个状态栏。状态栏的左侧是窗口信息(编号和名称),右侧是系统信息。

按下Ctrl+d或者显式输入e__it命令,就可以退出 Tmu__ 窗口。

$ e__it

2.3 前缀键

Tmu__ 窗口有大量的快捷键。所有快捷键都要通过前缀键唤起。默认的前缀键是Ctrl+b,即先按下Ctrl+b,快捷键才会生效。

举例来说,帮助命令的快捷键是Ctrl+b ?。它的用法是,在 Tmu__ 窗口中,先按下Ctrl+b,再按下?,就会显示帮助信息。

然后,按下 ESC 键或q键,就可以退出帮助。

三、会话管理

3.1 新建会话

第一个启动的 Tmu__ 窗口,编号是0,第二个窗口的编号是1,以此类推。这些窗口对应的会话,就是 0 号会话、1 号会话。

使用编号区分会话,不太直观,更好的方法是为会话起名。

$ tmu__ new -s

上面命令新建一个指定名称的会话。

3.2 分离会话

在 Tmu__ 窗口中,按下Ctrl+b d或者输入tmu__ detach命令,就会将当前会话与窗口分离。

$ tmu__ detach

上面命令执行后,就会退出当前 Tmu__ 窗口,但是会话和里面的进程仍然在后台运行。

tmu__ ls命令可以查看当前所有的 Tmu__ 会话。

$ tmu__ ls# or$ tmu__ list-session

3.3 接入会话

tmu__ attach命令用于重新接入某个已存在的会话。

# 使用会话编号$ tmu__ attach -t 0# 使用会话名称$ tmu__ attach -t

3.4 杀死会话

tmu__ kill-session命令用于杀死某个会话。

# 使用会话编号$ tmu__ kill-session -t 0# 使用会话名称$ tmu__ kill-session -t

3.5 切换会话

tmu__ switch命令用于切换会话。

# 使用会话编号$ tmu__ switch -t 0# 使用会话名称$ tmu__ switch -t

3.6 重命名会话

tmu__ rename-session命令用于重命名会话。

$ tmu__ rename-session -t 0

上面命令将0号会话重命名。

3.7 会话快捷键

下面是一些会话相关的快捷键。

Ctrl+b d:分离当前会话。

Ctrl+b s:列出所有会话。

Ctrl+b $:重命名当前会话。

四、最简操作流程

综上所述,以下是 Tmu__ 的最简操作流程。

新建会话tmu__ new -s my_session。

在 Tmu__ 窗口运行所需的程序。

按下快捷键Ctrl+b d将会话分离。

下次使用时,重新连接到会话tmu__ attach-session -t my_session。

五、窗格操作

Tmu__ 可以将窗口分成多个窗格(pane),每个窗格运行不同的命令。以下命令都是在 Tmu__ 窗口中执行。

5.1 划分窗格

tmu__ split-window命令用来划分窗格。

# 划分上下两个窗格$ tmu__ split-window# 划分左右两个窗格$ tmu__ split-window -h

5.2 移动光标

tmu__ select-pane命令用来移动光标位置。

# 光标切换到上方窗格$ tmu__ select-pane -U# 光标切换到下方窗格$ tmu__ select-pane -D# 光标切换到左边窗格$ tmu__ select-pane -L# 光标切换到右边窗格$ tmu__ select-pane -R

5.3 交换窗格位置

tmu__ swap-pane命令用来交换窗格位置。

# 当前窗格上移$ tmu__ swap-pane -U# 当前窗格下移$ tmu__ swap-pane -D

5.4 窗格快捷键

下面是一些窗格操作的快捷键。

Ctrl+b %:划分左右两个窗格。

Ctrl+b ":划分上下两个窗格。

Ctrl+b :光标切换到其他窗格。是指向要切换到的窗格的方向键,比如切换到下方窗格,就按方向键↓。

Ctrl+b ;:光标切换到上一个窗格。

Ctrl+b o:光标切换到下一个窗格。

Ctrl+b {:当前窗格左移。

Ctrl+b }:当前窗格右移。

Ctrl+b Ctrl+o:当前窗格上移。

Ctrl+b Alt+o:当前窗格下移。

Ctrl+b __:关闭当前窗格。

Ctrl+b !:将当前窗格拆分为一个独立窗口。

Ctrl+b z:当前窗格全屏显示,再使用一次会变回原来大小。

Ctrl+b Ctrl+:按箭头方向调整窗格大小。

Ctrl+b q:显示窗格编号。

六、窗口管理

除了将一个窗口划分成多个窗格,Tmu__ 也允许新建多个窗口。

6.1 新建窗口

tmu__ new-window命令用来创建新窗口。

$ tmu__ new-window# 新建一个指定名称的窗口$ tmu__ new-window -n

6.2 切换窗口

tmu__ select-window命令用来切换窗口。

# 切换到指定编号的窗口$ tmu__ select-window -t # 切换到指定名称的窗口$ tmu__ select-window -t

6.3 重命名窗口

tmu__ rename-window命令用于为当前窗口起名(或重命名)。

$ tmu__ rename-window

6.4 窗口快捷键

下面是一些窗口操作的快捷键。

Ctrl+b c:创建一个新窗口,状态栏会显示多个窗口的信息。

Ctrl+b p:切换到上一个窗口(按照状态栏上的顺序)。

Ctrl+b n:切换到下一个窗口。

Ctrl+b :切换到指定编号的窗口,其中的是状态栏上的窗口编号。

Ctrl+b w:从列表中选择窗口。

Ctrl+b ,:窗口重命名。

Linu__ 日志终极指南

Linu__ 日志分析

虽然提取的时候,不总是和你想的一样简单,但是日志中有大量信息在等着你。在这部分,我们会讲一些基本分析示例,你可以马上拿来处理你的日志(只是搜索里面有什么)。我们还会讲一些高级分析方法,开始的时候可能要花时间来做配置,但会为以后省很多时间。你可以把高级分析的示例用在待解析的数据上,比如生成摘要计数,过滤字段值等。

首先我们会演示,你应该如何使用不同的工具在命令行进行日志分析;然后,演示一个日志管理工具,它能够让大多数乏味的工作变得自动化和高效。

使用 Grep 搜索

搜索文本是找到你想要的信息的最基本方法。搜索文本最常用的工具是 grep 。这个命令行工具,大多数 Linu__ 发行版上都有,它支持你用正则表达式来搜索日志。正则表达式是一种用专门语言写成的语句,可用来识别匹配文本。最简单的正则表达式是把你搜索的字符串加上引号。

正则表达式

这里有个例子,它在 Ubuntu 的认证日志里搜索 “user hoover”:

$ GREP "USER HOOVER" /VAR/LOG/AUTH.LOG

ACCEPTED PASSWORD FOR HOOVER FROM 10.0.2.2 PORT 4792 SSH2

PAM_UNI__(SSHD:SESSION): SESSION OPENED FOR USER HOOVER BY (UID=0)

PAM_UNI__(SSHD:SESSION): SESSION CLOSED FOR USER HOOVER

构造精确的正则表达式很难。例如,假设我们搜索一个数字,比如端口号“4792” ,它也可以匹配时间戳,URLs和其他不需要的数据。在下面针对 Ubuntu 的例子里,它匹配了 Apache 日志,但这并不是我们想要的。

$ grep "4792" /var/log/auth.log

Accepted password for hoover from 10.0.2.2 port 4792 ssh2

74.91.21.46 - - [31/Mar/2015:19:44:32 +0000] "GET /scripts/samples/search?q=4972HTTP/1.0" 404 545 "-" "-”

延伸搜索

另一个有用的技巧是你可以用grep 做延伸搜索。它会输出匹配项的前几行和后几行内容。它可以帮你调试是什么导致了错误或问题。B 选项指定显示匹配项前面的行数,A 选项指定显示匹配项后面的行数。如下所示,我们看到,当有人以 admin 身份登陆失败后, 反向映射也会失败,这说明他们可能没有有效的域名。这很可疑!

$ grep -B 3 -A 2 'Invalid user' /var/log/auth.log

Apr 28 17:06:20 ip-172-31-11-241 sshd[12545]: reverse mapping checking getaddrinfo for 216-19-2-8.commspeed.net[216.19.2.8] failed - POSSIBLE BREAK-IN ATTEMPT!

Apr 28 17:06:20 ip-172-31-11-241 sshd[12545]: Received disconnect from 216.19.2.8: 11: Bye Bye [preauth]

Apr 28 17:06:20 ip-172-31-11-241 sshd[12547]: Invalid user; admin from 216.19.2.8

Apr 28 17:06:20 ip-172-31-11-241 sshd[12547]: input_userauth_request: invalid user admin [preauth]

Apr 28 17:06:20 ip-172-31-11-241 sshd[12547]: Received disconnect from 216.19.2.8: 11: Bye Bye [preauth]

Tail命令

你也可以将 tail 和 grep 搭配起来使用,以获取文件最后几行,或者跟踪日志并实时打印。当你在进行交互式更改比如架设服务器或测试代码更改的时候,非常有用。

$ tail -f /var/log/auth.log | grep 'Invalid user'

Apr 30 19:49:48 ip-172-31-11-241 sshd[6512]: Invalid user ubnt from 219.140.64.136

Apr 30 19:49:49 ip-172-31-11-241 sshd[6514]: Invalid user; admin from 219.140.64.136

全面介绍 grep 和正则表达式超出了本文的范围,Ryan 的教程里有更深入的介绍。

日志管理系统中有更高效更强大的搜索工具。它们通常对数据建立索引和并行查询,因此你可以在数秒之内快速查询高达 G 字节或 T 字节的日志。相比之下,用 grep ,可能要花几分钟,极端情况下会花费数小时。日志管理系统也像 Lucene (译注:一个开源的全文检索引擎工具包)一样使用查询语言 ,它为数字,字段等的搜索提供了简单的语法。

用Cut,AWK 和 Grok 解析日志

命令行工具

Linu__ 提供了几种文本解析和分析的命令行工具。如果你想快速解析少量的数据,它们很强大,但是处理大量数据要花很长时间。

Cut 命令

cut 命令可以从带分隔符的日志中解析字段。分隔符是类似等号或逗号的字符,用来划分字段或键值对。

比如说,我们想从这个日志中提取用户名:

pam_uni__(su:auth): authentication failure; logname=hoover uid=1000 euid=0 tty=/dev/pts/0 ruser=hoover rhost= user=root

我们可以和下面一样使用 cut 命令,获取第八个等号后边的文本。这是 Ubuntu 上的例子:

$ grep "authentication failure" /var/log/auth.log | cut -d '=' -f 8

root

hoover

root

nagios

nagios

AWK 命令

此外,你还可以用 awk,它拥有更强的解析字段的功能。它提供了一个脚本语言,让你几乎可以过滤出任何毫不相关的信息。

举个例子,假设我们在 Ubuntu 上有如下的日志,我们想提取登陆失败的用户名:

Mar 24 08:28:18 ip-172-31-11-241 sshd[32701]: input_userauth_request: invalid user guest [preauth]

下面是使用 awk 的例子。首先,用一个正则表达式 /sshd.__invalid user/ 匹配 sshd 无效用户的那一行。然后使用 { print } 打印第九个字段(默认的分隔符是空格)。这样就输出了用户名。

$ awk '/sshd.__invalid user/ { print }' /var/log/auth.log

guest

admin

info

test

ubnt

你可以从 Awk 用户指南中获取更多关于如何使用正则表达式和打印字段的信息。

日志管理系统

日志管理系统让解析更容易并且让用户可以快速分析大量日志文件。它们可以自动解析标准日志格式,比如公共 Linu__ 日志或 web 服务日志。这会节省很多时间,因为你在定位系统问题的时候不用去想如何写你的解析逻辑。

这里你可以看一个来自 sshd 的日志信息,解析出了远程主机和用户字段。这个截图来自 Loggly,一个基于云计算的日志管理服务。

对非标准格式的日志,你也可以自定义解析规则。最常用的工具是 Grok,它用通用正则表达式库把纯文本解析成 JSON 格式。这是 Grok 的配置示例,用来解析 Logstash 的内核日志 :

filter{

grok {

match => {"message" => "%{CISCOTIMESTAMP:timestamp} %{HOST:host} %{WORD:program}%{NOTSPACE} %{NOTSPACE}%{NUMBER:duration}%{NOTSPACE} %{GREEDYDATA:kernel_logs}"

}

}

这是用 Grok 解析后输出的结果:

使用 Rsyslog 和 AWK 过滤

过滤是搜索特定的字段,而不是全部文本。这让你的日志分析更精确,因为它会忽略其他不需要的日志信息。为了搜索一个字段值,你需要先解析你的日志或者至少有一种基于事件结构的搜索方法。

如何筛选出同一个应用的日志

通常,你只想看来自同一个应用的日志。如果你的应用总是把日志记录在单个文件中,这样很容易分析。如果你要从聚合或集中起来的日志里筛选出和某个程序相关的日志,会很复杂。这里有几种解决的办法。

用 Rsyslog 服务解析和过滤日志。这个例子是将 sshd 应用程序的日志写入名为 sshd-messages 的文件中,然后丢弃事件,所以它不会在其他日志里重复出现。你可以把它加到你的 Rsyslog.conf 文件里试一下。

:programname, isequal, “sshd” /var/log/sshd-messages

&~

使用命令行工具比如 awk ,提取特定字段的值,比如取 sshd 用户名。这是 Ubuntu 上的例子。

$ awk '/sshd.__invalid user/ { print }' /var/log/auth.log

guestadmin

info

test

ubnt

使用日志管理系统自动解析你的日志,然后点击目标应用的名字进行过滤。这个截图显示了 syslog 的各个字段,在一个叫做 Loggly 的日志管理服务中。如图中文氏图所示,当前正在过滤 sshd 这个应用。

如何筛选出错误信息

最常见的事情是,人们想看到日志中的错误。不巧的是,默认的 syslog 配置不会直接输出错误的级别,这使得错误信息很难被筛选。

这里有两种方案来解决这个问题。首先,你可以修改 rsyslog 配置,让它输出级别到日志文件中,使得错误信息容易被读取和搜索。在你的 Rsyslog 配置中你可以加一个pri-te__t 模版,如下所示:

" : %timegenerated%,%HOSTNAME%,%syslogtag%,%msg%n"

这个例子的输出如下,可以看到级别是 err。

: Mar 11 18:18:00,hoover-VirtualBo__,su[5026]:, pam_authenticate: Authentication failure

你可以用 awk 或grep 筛选出错误信息。这是 Ubuntu 下的例子,我们加了开始结束标志 . 和 > ,这样它就只匹配这个字段。

$ grep '.err>' /var/log/auth.log

: Mar 11 18:18:00,hoover-VirtualBo__,su[5026]:, pam_authenticate: Authentication failure

第二种选择是使用日志管理系统。好的日志管理系统会自动解析 syslog 消息并提取出级别字段。只需点一下,就会按指定的级别筛选日志。

这是 Loggly 的截图。显示了 syslog 各个字段, Error 级别高亮显示了,说明正在按级别 Error 过滤

电脑实用Linu__系列教程相关文章

Linu__教程基础知识大全

Linu__基本命令知识教程

windows安装教程入门基本知识

Linu__环境下使用git提交更新代码教程

linu__ 路由器限速实现方法教程

    上一篇:Linux基本命令知识教程

    下一篇:虚拟机安装linux红帽系统的详细图文教程

    830008