这部分将涉及常用的各类linux命令和一些系统高级管理特性,尤其是shell script的创建,这部分在系统自动化运维时会很有作用。

Linux系列文章

快速入门系列--Linux--01基础概念

快速入门系列--Linux--02文件系统管理

快速入门系列--Linux--03系统管理

快速入门系列--Linux--04扩展知识

在进入bash介绍之前,首先需要介绍vim编辑器,虽然现在的编辑器已经非常强大, 比如sublime等,但有些场合还是需要简单的使用vim来进行文件的编辑,由于现在这部分内容已经不是重点,因此通过一个简单的表格介绍其最基本的几个命令。

命令

示例

编辑w文本

vi test.txt,默认进入命令模式

编辑模式

通过i字符进入

命令模式

通过[Esc]进入,通过:wq完成编辑并保存,其中w表示保存,q表示退出,:q!表示强制退出不保存

常见快捷键

dd删除所在行,yy复制所在行,[ctrl]+r重做上一个操作

u复原前一个操,p粘贴

接下来开始bash常用命令介绍,内容比较多,需要有点耐心。这部分内容推荐把bash脚本当做一个全新的语言进行学习,这个力度将会使你很好的掌握bash。

命令

示例

type name

查看命令信息

变量的显示、设置和取消

echo $PATH, name=xionger, unset name

环境变量

HOME:用户主文件,SHELL:默认为/bin/bash

HISTSIZE:临时命令条数,PATH:执行文件查找路径,用:分隔

locale

查看系统语言环境信息,可以通过/etc/sysconfig/i18n

从键盘读取用户输入

read [-pt] variable

read -p 'please keyin your name: ' -t 30 named

声明变量declare

默认定义为字符串

declare –a,定义变量为数组

declare –i,定义变量为整数

declare –x,用法与export一样,将之后变量设置为环境变量

declare –r,设置为readonly

alias,unalias

给长命令设置/取消别名

history

查看已使用命令,history | grep named

相关配置文件

~/.bash_profile, /.bash_login, /.profile

可以通过source 配置文件,读入环境配置

数据流重定向

ll / > ~/temp/llShow.txt,一个>表示方式,2个表示append方式

命令执行的判断依据

; && ||

Pipe管道命令

后续命令依赖于前一个命令的结果,ls –al /etc | less

常用字符串命令

cut –c 分割字符; grep 字符串,查找包含此字符串的行

sort排序命令; uniq去重命令;wc获取行数

其他命令:tr,col,join,paste,expand,split

Tip:如果命令太长,可以使用\[Enter]方式换行。

正则表达式在Linux的应用:正则的概念和使用大家已经非常熟悉,这儿就不做介绍了,可参考博文--正则表达式。这儿主要介绍其在系统中的使用,目的只有一个,为之后的运维脚本提供基础。通常正则会用在grep命令中,比如 grep –n 'the' demo.txt,这儿的the可以用任意正则pattern替换。此外,可以通过sed、awk工具帮助查询脚本,需要时查询相关文档即可。

 #!/bin/bash
 # program:用户输入一个文件名,系统检查其目录和权限
 # History:
 PATH=/bin:/sbin:/user/bin:/user/sbin:~/bin
 export PATH

 #.输入文件名
 echo -e "please input a filename, it will check the filename's type and \
 permission \n\n"
 read -p "input filename : " filename
 test -z $filename &&
 #.判断文件是否存在
 test ! -e $filename &&
 #.判断文件类型
 test -f $filename && filetype='regular file'
 test -d $filename && filetype='directory'
 test -r $filename && perm='readable'
 test -w $filename && perm='$perm writable'
 test -x $filename && perm='$perm executable'
 #.输出信息
 echo "The filename: $filename is a $filetype"
 echo "And the permissions are : $perm"

常见逻辑结构

逻辑结构

示例

判断结构

if ["$yn"=="y"] || ["$yn"=="Y"]; then

echo "OK,continue"

elif ["$yn"=="n"] || ["$yn"=="N"]; then

echo "Fail"

else

echo "Default"

fi

循环结构

for username in $users

do

id $username

finger $username

done

函数

function printit(){}

在Linux中,用户的账号信息都保存在/etc/passwd文件中,常见的账号管理命令如下所示。

命令

示例

组命令

groups查看当前组,newgrp创建新组

用户命令

useradd创建用户,passwd修改密码,chage显示密码详细信息

usermod修改用户信息, userdel删除用户

Acl权限

Getfacl, setfacl

用户身份切换

su切换用户, sudo模拟root进行操作,非常有用,比如安装软件

sudo apt install xxx

pam模块

Pluggable Authentication Modules用于用户认证

信息查询

w, who获取账号登录信息,last,lastlog

接下来,介绍linux关于文件系统的一些高级概念。

磁盘配额Quota:用于管理每个用户可用的磁盘大小,包括一个hard阀值和一个soft阀值。

软件磁盘阵列Software RAID:比如RAID-0性能最佳,RAID-1完整备份,RAID-0+1兼顾性能和备份,RAID-5通过同位检查码parity来均衡性能和安全,任何一个盘损坏,均可恢复,通过/etc/madadm.conf配置。

逻辑卷管理器LVM(Logical Volume Manager):涉及5个主要概念,PV表示物理卷,VG表示卷用户组,PE表示物理扩展块,LV表示逻辑卷。

Tip:现在流行的Docker就是建立在LXC上的容器引擎,这部分内容还需要加强。

我们常见的Job类型工作在Linux中被称为crontab例行性任务,系统中常见的例行性工作包括:进行日志文件的轮替,日志文件分析Logwatch任务,新建locate数据库,whatis数据库的建立,RPM软件日志文件的新建,删除临时文件,与网络服务有关的分析行为。

仅执行一次的工作:/etc/init.d/atd restart, chkconfig atd on, at now + 5 minutes

循环性的例行工作:59 23 1 5 * mail tete < /home/xionger/lover.txt 每年给女友发邮件,系统配置文件/etc/crontab

之后介绍Linux的进程管理,Linux的进程也包括进程控制块PCB和数据部分,前者包含PID和权限相关信息,数据部分包含了程序所需的代码和相关资料,对其管理的相关命令如下所示。

命令

示例

工作管理

Jobs查看当前工作,kill –pid关闭后台进程

进程查看

ps aux, ps aux | egrep '(cron|syslog)'

top动态查看进程变化

pstree查看进程树

ps aux | grep 'syslog' | grep -v 'grep' | awk '{print $2}'

killall -9 httpd终止所有以httpd启动的进程

进程优先级

ps -l, nice, renice [number] PID

系统资源的查看

free查看内存信息;uname查看内核信息;

uptime查看系统启动时间和工作负载

netstat:跟踪网路

其他命令:dmesg, vmstat

cat /etc/services

最后介绍,个人觉得比较重要的系统服务和日志分析部分。在Linux中,daemon后台进程(也就是服务)包含两类,一种是stand_alone的,一种是由super daemon统一管理的。通常来说,每一个服务都具有一个指定的端口,比如http服务的80端口,ftp服务的21端口。服务的启动脚本将放置在/etc/init.d/*中,其相关初始化配置文件放在/etc/sysconfig/*中,super daemon的配置文件在/etc/xinetd.conf,/etc/xinetd.d/*中,服务自身的配置文件放在/etc/*中,服务产生的数据放在/var/lib/*中,服务的PID则记录在/var/run/*中。可以通过service xxx restart启动服务,通过service --status-all查看服务状态。

Tip:可以通过修改/etc/hosts.allow和/etc/hosts.deny来设置白/黑名单。

在Linux中,常见的日志文件通常在/var/log/目录, cron为工作调度日志,dmesg为内核检测信息,lastlog所有账号最近一次登录信息,maillog邮件相关信息(SMTP, POP3),messages系统错误信息,secure登录相关安全信息,httpd网络服务信息。

那么记录日志文件的服务是什么呢?syslogd,可以通过如下命令查看:ps aux | grep syslog, chkconfig --list syslog,为了保护日志文件,我们可以通过chattr –a来实现。此外,日志的轮替是通过logroate服务来实现的,其配置文件为/etc/logrotate,conf,/etc/logrotate.d目录中文件均会被读入配置。(注意在阿里云中,ubuntu14.0.0,所有的syslog均变为rsyslog).

此外,linux常见的日志分析工具包括logwatch,可以定期将分析报告发送到你的邮箱,如果需要更进一步的自定义分析,到时参阅资料即可。

"人活着就要实现自己吹过的'牛逼'"--佚名

参考资料:

  1. 鸟哥. 鸟哥的Linux私房菜基础学习篇(第三版)[M]. 北京:人民邮电出版社, 2010.

Linux快速入门03-系统管理的更多相关文章

  1. Linux快速入门打开你的学习之道

    Linux快速入门打开你的学习之道 相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢? 首先,希望大家弄清楚自己为什 ...

  2. Linux快速入门教程-进程管理ipcs命令学习

    使用Linux系统必备的技能之一就是Linux进程管理,系统运行的过程正是无数进程在运行的过程.这些进程的运行需要占用系统的内存等资源,做好系统进程的管理,对于我们合理分配.使用系统资源有非常大的意义 ...

  3. Linux快速入门02-文件系统管理

    继续进入Linux文件系统的学习,加油,早日突破MS压在自己身上的那道束缚. Linux系列文章 快速入门系列--Linux--01基础概念 快速入门系列--Linux--02文件系统管理 快速入门系 ...

  4. Linux快速入门01-基础概念

    4年多前,刚到上海时报过一个关于Oracle的培训班,在那里接触到了Linux,不过一直都没真正去试着使用它.现在经过慢慢的成长,越来越觉得,Linux是每一个服务端工程师必须掌握的系统,即使是现在最 ...

  5. Linux快速入门04-扩展知识

    这部分是快速学习的最后一部分知识,其中最重要的内容就是源码的打包和软件的安装的学习,由于个人的Linux学习目的就是自己能在阿里云Ubuntu上搭建一个简单的nodejs发布环境. Linux系列文章 ...

  6. NOI Linux 快速入门指南

    目录 关于安装 NOI Linux 系统配置 网络 输入法 编辑器 1. gedit 打开 配置 外观展示 2. vim 打开 配置 使用 makefile 编译运行 1. 编写 makefile 2 ...

  7. linux快速入门 1.1命令行操作

    http://lovesoo.org/linux-command-line-operation.html 1.1命令行操作 目录: <wp_nokeywordlink>Shell简介 &l ...

  8. Linux快速入门

    一.Linux介绍 1.Linux是基于Unix的开源免费的操作系统 2.Linux的分类: (1)Linux根据市场需求不同,基本分为两个方向: 1)图形化界面版:注重用户体验,类似window操作 ...

  9. ETCD快速入门-03 常用命令

    3. ETCD 常用命令     etcdctl是一个命令行的客户端,它提供了一些命令,可以方便我们在对服务进行测试或者手动修改数据库内容.etcdctl与kubectl和systemctl的命令原理 ...

随机推荐

  1. React Native填坑之旅--组件生命周期

    这次我们来填React Native生命周期的坑.这一点非常重要,需要有一个清晰的认识.如果你了解Android或者iOS的话,你会非常熟悉我们今天要说的的内容. 基本上一个React Native的 ...

  2. 创建GitHub技术博客全攻略

    http://blog.csdn.net/renfufei/article/details/37725057 http://www.pchou.info/web-build/2014/07/04/bu ...

  3. Restore Oracle database to another server

    1. Copy or remotely mount the backupset folder from the source server to the target server 2. On the ...

  4. 让IE浏览器支持CSS3圆角属性的方法

    绘出圆角: 1.下载一个压缩包,里面有一个微软的脚本文件(11KB)和一个用来测试服务器是否有正确的Content-Type的HTML文件:iecss3.rar:.htc 文件是IE内核支持Web行为 ...

  5. json中$ref对象重复引用问题

    FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测.关闭引用检测后,重复引用对象时就不会被$ref代 ...

  6. Asp.net web form url route使用总结

    asp.net web form 使用URL路由 注不是mvc中的路由 一.前台控件使用路由,通过表达式生成url地址,注意给路由参数赋值,防止使用了其他路由表达式值方式1:<asp:Hyper ...

  7. 在UWP应用中加入Cortana语音指令集

    本文介绍小娜语音指令集的使用场景,如何将UWP应用接入小娜的语音指令集,使用户直接通过小娜启动应用并使用应用中 一些轻量级的功能.文中以必应词典作为实例讲解必应词典UWP版本是如何接入小娜语音功能的. ...

  8. 作业三:代码规范、代码复审、PSP

    一.代码规范 我认为我们编写的代码都需要进行规范的操作,因为如果为了图省事情或者为了减少时间去完成这个编程.在最后检验的时候就会出现一些警告,导致你这次编程的代码出现问题,当出现问题的时候你在回头去检 ...

  9. 【面试必备】javascript操作DOM元素

    前言 时间过的真快,不知不觉就到年底了.问问自己,这一年你对自己的工作满意吗? 评价标准是什么呢?当然是马云的那两条准则了:钱给到了吗?干的爽吗?如果答案都是no,那么,你准备好跳槽了吗? 为了应对年 ...

  10. C#中使用反射获取结构体实例

    一般用反射获取类对象的实例比较简单,只要类有一个无参构造函数或没有显示声明带参的构造函数即可使用如下代码 static void Main(string[] args) { Type type = t ...