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

Linux系列文章

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

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

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

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

由于现在均是使用云平台,这部分内容已完全透明,因而只做一个简单的了解,整个linux的启动过程包含如下8个步骤:

1.加载BIOS的硬件信息与进行自我检测,并依据设置取得第一个可启动的设备。

2.读取并执行第一个启动设备内MBR的boot Loader(即grub,spfdisk等程序)

3.依据boot loader的设置加载kernel,内核会开始检测硬件与加载驱动程序

4.加载完硬件驱动,内核会主动调用init进程,而该进程回去run-level信息

5.init执行/etc/rc.d/rc/sysinit文件来准备软件执行的操作环境(如网络,时区)

6.init执行run-level的各个服务的启动(script方式,可以添加自己的服务)

7.init执行/etc/rc.d.rc.local文件

8.init执行终端机模拟城西mingetty来启动Login进程,最后等待用户登录。

这部分有关的命令包括:runlevel查看当前runlevel;内核依赖性的查看; lsmod内核模块的查看;modinfo mii查看指定模块信息;insmod载入内核模块;rmmod删除内核模块;modprobe是一个增强性的命令,参数-c列出所有系统模块,-f加载模块,-r删除模块。

在linux世界中,最吸引人的莫过于开源代码了,比如Linux上最标准的程序语言C,我们使用C语法进行源代码飙血,写完后使用gcc进行编译,就可以制作一个可以执行的二进制文件。比如,用C语言编写一个hello.c,然后使用gcc –c hello.c编译生成hello.o目标程序,最后运行hello.o即可,如果需要外部库还涉及链接操作。不过这种方式在源文件很多时非常不便,通常来说,我们下载的源文件中都包含./configure文件用于生成Makefile文件,其用于管理编译过程,接下来介绍完整的安装过程。

1.取得源文件,将tarball文件解压在/usr/local/src目录

2.进入新建目录下,阅读install与readme文件,安装一些前置软件

3.通过./configure自动检测程序检测OS,并建立Makefile文件

4.使用make命令,其通过MakeFile文件中的参数进行编译操作

5.使用make install命令,也通过MakeFile文件中的参数完成安装

之前介绍的源码安装方式当应用程序很少时足以支撑,但当安装涉及大量依赖软件,且版本很多时,将会成为一个巨大的噩梦,这是就要推荐linux发行版推出的便捷安装方式了。通常来说,包括2大阵营,一个是Debian社区的dpkg,比如我用的Ubuntu就是该阵营,适合小微企业;还有一个是RadHat的RPM(RedHat Package Management)阵营,其中包括CentOS等熟知发行版,这部分一般用在集群超过10台服务器的中大型应用。

对于Ubuntu来说,安装命令:sudo apt install xxx

对于RedHat,安装命令:rpm –ivh package_name; 安装/升级软件:yum install pam-devel。可以通过rpm -qa查找包名,之后使用rpm -ql xxxx查找包的安装地址。

Linux中,备份通常都是首先建立完整备份,然后据此进行增量或差异差异备份。通常使用的工具有dd,cpio,dump/restore,也可以使用tar进行备份,使用rsync进行镜像备份,,一个推荐的备份方案如下所示,最后会附上相应的备份脚本。

1.主机硬件:使用一个独立的文件系统来存储备份数据,此文件系统挂载在/backup中

2.每日进行:备份MySQL数据库

3.每周进行:包括/home,/var,/etc/boot,/usr/local等目录与特殊服务的目录

4.自动处理:这方面利用/etc/crontab来自动提供备份的进行

5.远程备份:每月定期将数据传输到另一台机器上

 第一部分/backup/backupwk.sh
 #!/bin/bash
 #每周的备份脚本
 # History:
 PATH=/bin:/sbin:/user/bin:/user/sbin; export PATH
 export LANG=C

 basedir=/backup/weekly
 named=$basedir/named
 postfixd=$basedir/postfixd
 vsftpd=$basedir/vsftpd
 sshd=$basedir/sshd
 sambad=$basedir/sambad
 wwwd=$basedir/wwwd
 others=$basedir/others
 userinfod=$basedir/userinfod

 for dirs in $basedir $named $postfixd $vsftpd $sshd $wwwd $others $userinfod
 do
 [ ! -d "$dirs" ] && mkdir -p $dirs
 done

 #.将系统主要服务的配置文件分别备份下来,同时也全部备份/etc
 cp -a /var/named/chroot/{etc,var} $named
 cp -a /etc/postfix /etc/dovecot.conf $postfixd
 cp -a /etc/vsftpd/* $vsftpd
 cp -a /etc/ssh/* $sshd
 cp -a /etc/named/samba/* $sambad
 cp -a /etc/{my.cnf,php.ini,httpd} $wwwd
 cd /var/lib
 tar -jpc -f $wwwd/mysql.tar.bz2 mysql
 cd /var/www
 tar -jpc -f $wwwd/html.tar.bz2 html cgi-bin
 cd /
 tar -jpc -f $others/etc.tar.bz2 etc
 cd /usr/
 tar -jpc -f $others/local.tar.bz2 local

 #2.关于用户参数
 cp -a /etc/{passwd, shadow, group} $userinfod
 cd /var/spool
 tar -jpc -f $userinfod/mail.tar.bz2 mail
 cd /var/spool
 tar -jpc -f $userinfod/home.tar.bz2 home
 cd /var/spool
 tar -jpc -f $userinfod/cron.tar.bz2 cron at

 第二部分backupday.sh
 #!/bin/bash
 #每日的备份脚本
 # History:2016
 PATH=/bin:/sbin:/user/bin:/user/sbin; export PATH
 export LANG=C

 basedir=/backup/daily
 basefile1=$basedir/mysql.$(date +%Y-%m-%d).tar.bz2
 basefile2=$basedir/cgi-bin.$(date +%Y-%m-%d).tar.bz2

 [! -d "$"] && mkdir $basedir
 cd /var/lib
 tar -jpc -f $basefile1 mysql
 cd /var/www
 tar -jpc -f $basefile2 cgi-bin

 第三部分vi /etc/crontab
 30 3 * * 0 root /backup/backupwk.sh
 30 2 * * * root /backup/backupday.sh

"真正的才智是刚毅的志向。" --拿破仑

Tip:由于ubuntu下没有chkconfig模块,因此可以通过安装rcconf小工具来管理默认启动服务。

参考资料:

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

Linux快速入门04-扩展知识的更多相关文章

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

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

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

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

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

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

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

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

  5. Linux快速入门03-系统管理

    这部分将涉及常用的各类linux命令和一些系统高级管理特性,尤其是shell script的创建,这部分在系统自动化运维时会很有作用. Linux系列文章 快速入门系列--Linux--01基础概念 ...

  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基础入门--04

    目录结构及文件基本操作 实验介绍: 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录结构之 ...

  9. SQLAlchemy 快速入门、基础知识

    SQLAlchemy 是Python 编程语言下的一款开源软件.提供了SQL工具包及对象关系映射(ORM)工具. ORM, 全称Object Relational Mapping, 中文叫做对象关系映 ...

随机推荐

  1. Global文件编译发布,代码不执行的问题与解决

    问题:在Application_BeginRequest添加防止跨站点注入的过滤代码,VS2005编译成DLL发布后发现代码不会被执行: 环境:windows server 2008 r2 x64位  ...

  2. Android技术点

    一.四大组件 1.1  Activity 1.2  Broadcast 1.3  Content Provider 1.4  Service 1. Binder 2. Messager 3. AIDL ...

  3. swift的运算符

    1.什么是运算符?它有什么作用? 运算符是一种特定的符号或者表达式.它用来验证.修改.合并变量. 2.运算符有哪些? 运算符有很多,很多朋友学的很烦.这里我依据它的作用把它分为几块来介绍: a:赋值运 ...

  4. blog搬迁

    因为一些个人原因,2年后继续写blog,但是blog搬到github上!具体的地址为: http://www.94geek.com 内容以linux的c开发,分布式存储和分布式计算,还有架构为主.

  5. maven之上传新的jar包

    今天要求上传若干jar包到maven服务器,师父曾经真的是一步一步点给我看.然后我特喵的忘记了,师父又一步一步点给我看,所以我记录下来,以后留用. 步骤如下,如图所示: 1)先在首页查询下将要上传的j ...

  6. 运维自动化工具---Puppet

    案例环境:-----------------------------------------------------------------主机  操作系统   IP地址  主要软件--------- ...

  7. 【ios面试总结】

    一 C语言方法的知识 1: const  static  voilite 修辞变量各代表什么意思? const  修辞的变量为常量,常量是不容许修改.  static  修辞的变量为静态变量,在内存中 ...

  8. LAMP自定义编译安装

    httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程: 一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util, ...

  9. Linux环境下中文字体乱码处理办法

    项目中包含了一项生成JPG图片的功能,该功能需要使用JAVA的Graphics2D动态生成图片中的文字,原来在Windows平台中没有发现问题,但是迁移至Linux平台后发现生成的中文变成了乱码. 百 ...

  10. 2013-08-12【随笔2】-Roy

    最近总是因为一下小事情,就会变得闹心,就会自己胡思乱想,自己吓唬自己,自己给自己找烦恼. 是因为每天无所事事,日子过得没有了重点,然后每天人心惶惶,有点杞人忧天了. 还是因为这样平淡的日子,消磨了我们 ...