操作系统技术,云计算应用

Linux cscope命令

myos阅读(9)

一、简介

        Cscope 是一款开源免费的 C/C++浏览工具,自带一个基于文本的用户界面,通过cscope可以很方便地找到某个函数或变量的定义位置、被调用的位置等信息。Cscope对 C /C++支持较好,也可以自己定制来支持Java和Perl、Python等脚本语言。Vim和gvim都提供了cscope接口,通过适当的配置,可以在Unix/Linux下实现变量、函数、文件等之间跳转,就像Windows下的Source Insight一样灵活易用。

 

二、安装

1)yum安装

yum install -y cscope

2)源码安装

http://sourceforge.net/projects/cscope/files/
./configure
make 
make install

三、实例

CentOS学习笔记—软件管理程序RPM、YUM

myos阅读(7)

软件管理程序

Linux的软件安装分为源代码编译安装和打包安装。RPM是一种打包安装方式,是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 distributions 就使用这个机制来作为软件安装的管理方式。包括 Fedora, CentOS, SuSE 等等知名的开发商都是用这咚咚

什么是 i386, i586, i686, noarch, x86_64

这是个很好玩的地方,由於 RPM 可以适用在不同的操作平台上,但是不同的平台配置的参数还是有所差异性! 并且,我们可以针对比较高阶的 CPU 来进行最佳化参数的配置,这样才能够使用高阶 CPU 所带来的硬件加速功能。 所以就有所谓的 i386, i586, i686, x86_64 与 noarch 等的文件名称出现了!

平台名称 适合平台说明
i386 几乎适用於所有的 x86 平台,不论是旧的 pentum 或者是新的 Intel Core 2 与 K8 系列的 CPU 等等,都可以正常的工作!那个 i 指的是 Intel 兼容的 CPU 的意思,至於 386 不用说,就是 CPU 的等级啦!
i586 就是针对 586 等级的计算机进行最佳化编译。那是哪些 CPU 呢?包括 pentum 第一代 MMX CPU, AMD 的 K5, K6 系列 CPU (socket 7 插脚) 等等的 CPU 都算是这个等级;
i686 在 pentun II 以后的 Intel 系列 CPU ,及 K7 以后等级的 CPU 都属於这个 686 等级! 由於目前市面上几乎仅剩 P-II 以后等级的硬件平台,因此很多 distributions 都直接释出这种等级的 RPM 文件。
x86_64 针对 64 位的 CPU 进行最佳化编译配置,包括 Intel 的 Core 2 以上等级 CPU ,以及 AMD 的 Athlon64 以后等级的 CPU ,都属於这一类型的硬件平台。
noarch 就是没有任何硬件等级上的限制。一般来说,这种类型的 RPM 文件,里面应该没有 binary program 存在, 较常出现的就是属於 shell script 方面的软件。

根据上面的说明,其实我们只要选择 i386 版本来安装在你的 x86 硬件上面就肯定没问题。但是如果强调效能的话, 还是选择搭配你的硬件的 RPM 文件吧!毕竟该软件才有针对你的 CPU 硬件平台进行过参数最佳化的编译嘛!

x86_64版本不仅需要硬件cpu是64位,Linux也要是64位的才行。

RPM 默认安装的路径

/etc 一些配置档放置的目录,例如 /etc/crontab
/usr/bin 一些可运行文件
/usr/lib 些程序使用的动态函式库
/usr/share/doc 一些基本的软件使用手册与说明档
/usr/share/man 一些 man page 文件

RPM 安装 (install)

因为安装软件是 root 的工作,因此你得要是 root 的身份才能够操作 rpm 这命令的。 用 rpm 来安装很简单啦!假设我要安装一个档名为 rp-pppoe-3.5-32.1.i386.rpm 的文件,那么我可以这样:

[root@www ~]# rpm -i rp-pppoe-3.5-32.1.i386.rpm

不过,这样的参数其实无法显示安装的进度,所以,通常我们会这样下达安装命令:

[root@www ~]# rpm -ivh package_name
选项与参数:
-i :install 的意思
-v :察看更细部的安装资讯画面
-h :以安装资讯列显示安装进度

范例一:安装 rp-pppoe-3.5-32.1.i386.rpm
[root@www ~]# rpm -ivh rp-pppoe-3.5-32.1.i386.rpm
Preparing...     ####################################### [100%]
   1:rp-pppoe    ####################################### [100%] 

范例二、一口气安装两个以上的软件时:
[root@www ~]# rpm -ivh a.i386.rpm b.i386.rpm *.rpm
# 后面直接接上许多的软件文件!

范例三、直接由网络上面的某个文件安装,以网址来安装:
[root@www ~]# rpm -ivh http://website.name/path/pkgname.rpm

另外,如果我们在安装的过程当中发现问题,或者已经知道会发生的问题, 而还是『执意』要安装这个软件时,可以使用如下的参数『强制』安装上去:

可下达的选项 代表意义
–nodeps

使用时机:当发生软件属性相依问题而无法安装,但你执意安装时

危险性: 软件会有相依性的原因是因为彼此会使用到对方的机制或功能,如果强制安装而不考虑软件的属性相依, 则可能会造成该软件的无法正常使用!

–replacefiles

使用时机: 如果在安装的过程当中出现了『某个文件已经被安装在你的系统上面』的资讯,又或许出现版本不合的信息 (confilcting files) 时,可以使用这个参数来直接覆盖文件。

危险性: 覆盖的动作是无法复原的!所以,你必须要很清楚的知道被覆盖的文件是真的可以被覆盖喔!否则会欲哭无泪!

–replacepkgs 使用时机: 重新安装某个已经安装过的软件!如果你要安装一堆 RPM 软件文件时,可以使用 rpm -ivh *.rpm ,但若某些软件已经安装过了, 此时系统会出现『某软件已安装』的资讯,导致无法继续安装。此时可使用这个选项来重复安装喔!
–force

使用时机:这个参数其实就是 –replacefiles 与 –replacepkgs 的综合体!

–test

使用时机: 想要测试一下该软件是否可以被安装到使用者的 Linux 环境当中,可找出是否有属性相依的问题。范例为:

rpm -ivh pkgname.i386.rpm –test

–justdb 使用时机: 由於 RPM 数据库破损或者是某些缘故产生错误时,可使用这个选项来升级软件在数据库内的相关资讯。
–nosignature 使用时机: 想要略过数码签章的检查时,可以使用这个选项。
–prefix 新路径 使用时机: 要将软件安装到其他非正规目录时。举例来说,你想要将某软件安装到 /usr/local 而非正规的 /bin, /etc 等目录, 就可以使用『 –prefix /usr/local 』来处理了。
–noscripts

使用时机:不想让该软件在安装过程中自行运行某些系统命令。

说明: RPM 的优点除了可以将文件放置到定位之外,还可以自动运行一些前置作业的命令,例如数据库的初始化。 如果你不想要让 RPM 帮你自动运行这一类型的命令,就加上他吧!

RPM 升级与升级 (upgrade/freshen)

使用 RPM 来升级真是太简单了!就以 -Uvh 或 -Fvh 来升级即可,而 -Uvh 与 -Fvh 可以用的选项与参数,跟 install 是一样的。不过, -U 与 -F 的意义还是不太一样的,基本的差别是这样的:

-Uvh 后面接的软件即使没有安装过,则系统将予以直接安装; 若后面接的软件有安装过旧版,则系统自动升级至新版;
-Fvh 如果后面接的软件并未安装到你的 Linux 系统上,则该软件不会被安装;亦即只有已安装至你 Linux 系统内的软件会被『升级』!

RPM 查询 (query)

RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/ 这个目录下的数据库文件啦!另外, RPM 也可以查询未安装的 RPM 文件内的资讯喔!那如何去查询呢? 我们先来谈谈可用的选项有哪些?

[root@www ~]# rpm -qa                              <==已安装软件
[root@www ~]# rpm -q[licdR] 已安装的软件名称       <==已安装软件
[root@www ~]# rpm -qf 存在於系统上面的某个档名     <==已安装软件
[root@www ~]# rpm -qp[licdR] 未安装的某个文件名称  <==查阅RPM文件
选项与参数:
查询已安装软件的资讯:
-q  :仅查询,后面接的软件名称是否有安装;
-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;
-qi :列出该软件的详细资讯 (information),包含开发商、版本与说明等;
-ql :列出该软件所有的文件与目录所在完整档名 (list);
-qc :列出该软件的所有配置档 (找出在 /etc/ 底下的档名而已)
-qd :列出该软件的所有说明档 (找出与 man 有关的文件而已)
-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)
-qf :由后面接的文件名称,找出该文件属於哪一个已安装的软件;
查询某个 RPM 文件内含有的资讯:
-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在於找出
        某个 RPM 文件内的资讯,而非已安装的软件资讯!注意!

在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分, 一个是查已安装到系统上面的的软件资讯,这部份的资讯都是由 /var/lib/rpm/ 所提供。另一个则是查某个 rpm 文件内容, 等於是由 RPM 文件内找出一些要写入数据库内的资讯就是了,这部份就得要使用 -qp (p 是 package 的意思)。 那就来看看几个简单的范例吧!

范例一:找出你的 Linux 是否有安装 logrotate 这个软件?
[root@www ~]# rpm -q logrotate
logrotate-3.7.4-8
[root@www ~]# rpm -q logrotating
package logrotating is not installed
# 注意到,系统会去找是否有安装后面接的软件名称。注意,
# 不必要加上版本喔!至於显示的结果,一看就知道有没有安装啦!

范例二:列出上题当中,属於该软件所提供的所有目录与文件:
[root@www ~]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf
....(以下省略)....
# 可以看出该软件到底提供了多少的文件与目录,也可以追踪软件的数据。

范例三:列出 logrotate 这个软件的相关说明数据:
[root@www ~]# rpm -qi logrotate
Name        : logrotate             Relocations: (not relocatable)
Version     : 3.7.4                      Vendor: CentOS
Release     : 8                      Build Date: Sun 02 Dec 2007 08:38:06 AM CST
Install Date: Sat 09 May 2009 11:59:05 PM CST    Build Host: builder6
Group       : System Environment/Base  Source RPM: logrotate-3.7.4-8.src.rpm
Size        : 53618                     License: GPL
Signature   : DSA/SHA1, Sun 02 Dec 2007 09:10:01 AM CST, Key ID a8a447dce8562897
Summary     : Rotates, compresses, removes and mails system log files.
Description :
The logrotate utility is designed to simplify the administration of
log files on a system which generates a lot of log files.  Logrotate
allows for the automatic rotation compression, removal and mailing of
log files.  Logrotate can be set to handle a log file daily, weekly,
monthly or when the log file gets to a certain size.  Normally,
logrotate runs as a daily cron job.

Install the logrotate package if you need a utility to deal with the
log files on your system.
# 列出该软件的 information (资讯),里面的资讯可多著呢,包括了软件名称、
# 版本、开发商、SRPM文件名称、打包次数、简单说明资讯、软件打包者、
# 安装日期等等!如果想要详细的知道该软件的数据,用这个参数来了解一下

范例四:分别仅找出 logrotate 的配置档与说明档
[root@www ~]# rpm -qc logrotate
[root@www ~]# rpm -qd logrotate

范例五:若要成功安装 logrotate ,他还需要什么文件的帮忙?
[root@www ~]# rpm -qR logrotate
/bin/sh
config(logrotate) = 3.7.4-8
libc.so.6
....(以下省略)....
# 由这里看起来,呵呵~还需要很多文件的支持才行喔!

范例六:由上面的范例五,找出 /bin/sh 是那个软件提供的?
[root@www ~]# rpm -qf /bin/sh
bash-3.2-21.el5
# 这个参数后面接的可是『文件』呐!不像前面都是接软件喔!
# 这个功能在查询系统的某个文件属於哪一个软件所有的。

范例七:假设我有下载一个 RPM 文件,想要知道该文件的需求文件,该如何?
[root@www ~]# rpm -qpR filename.i386.rpm
# 加上 -qpR ,找出该文件需求的数据!

RPM 反安装与重建数据库 (erase/rebuilddb)

反安装就是将软件卸载啦!要注意的是,『解安装的过程一定要由最上一级往下解除』,以 rp-pppoe 为例,这一个软件主要是依据 ppp 这个软件来安装的,所以当你要解除 ppp 的时候,就必须要先解除 rp-pppoe 才行!否则就会发生结构上的问题啦!这个可以由建筑物来说明, 如果你要拆除五、六楼,那么当然要由六楼拆起,否则先拆的是第五楼时,那么上面的楼层难道会悬空?

移除的选项很简单,就透过 -e 即可移除。不过,很常发生软件属性相依导致无法移除某些软件的问题! 我们以底下的例子来说明:

# 1. 找出与 pam 有关的软件名称,并尝试移除 pam 这个软件:
[root@www ~]# rpm -qa | grep pam
pam-devel-0.99.6.2-3.27.el5
pam_passwdqc-1.0.2-1.2.2
pam_pkcs11-0.5.3-23
pam_smb-1.1.7-7.2.1
pam-0.99.6.2-3.27.el5
pam_ccreds-3-5
pam_krb5-2.2.14-1
[root@www ~]# rpm -e pam
error: Failed dependencies:  <==这里提到的是相依性的问题
        libpam.so.0 is needed by (installed) coreutils-5.97-14.el5.i386
        libpam.so.0 is needed by (installed) libuser-0.54.7-2.el5.5.i386
....(以下省略)....

# 2. 若仅移除 pam-devel 这个之前范例安装上的软件呢?
[root@www ~]# rpm -e pam-devel  <==不会出现任何信息!
[root@www ~]# rpm -q pam-devel
package pam-devel is not installed

由於 RPM 文件常常会安装/移除/升级等,某些动作或许可能会导致 RPM 数据库 /var/lib/rpm/ 内的文件破损。果真如此的话,那你该如何是好?别担心,我们可以使用 –rebuilddb 这个选项来重建一下数据库喔! 作法如下:

[root@www ~]# rpm --rebuilddb   <==重建数据库

CentOS强烈建议使用yum来管理软件,且只使用CentOS推荐的软件,如果没有太大的需要,建议使用yum来安装软件,这样的安装可以最大的保证系统的稳定性。

YUM 线上升级机制

yum 是透过分析 RPM 的标头数据后, 根据各软件的相关性制作出属性相依时的解决方案,然后可以自动处理软件的相依属性问题,以解决软件安装或移除与升级的问题。

由於 distribution 必须要先释出软件,然后将软件放置於 yum 服务器上面,以提供用户端来要求安装与升级之用的。 因此我们想要使用 yum 的功能时,必须要先找到适合的 yum server 才行啊!

实际上当你第一次使用yum时,CentOS6以上版本优先安装了 fastestmirror,用以选择最快的yum服务器。

  • 查询功能:yum [list|info|search|provides|whatprovides] 参数
    [root@www ~]# yum [option] [查询工作项目] [相关参数]
    选项与参数:
    [option]:主要的选项,包括有:
      -y :当 yum 要等待使用者输入时,这个选项可以自动提供 yes 的回应;
      --installroot=/some/path :将该软件安装在 /some/path 而不使用默认路径
    [查询工作项目] [相关参数]:这方面的参数有:
      search  :搜寻某个软件名称或者是描述 (description) 的重要关键字;
      list    :列出目前 yum 所管理的所有的软件名称与版本,有点类似 rpm -qa;
      info    :同上,不过有点类似 rpm -qai 的运行结果;
      provides:从文件去搜寻软件!类似 rpm -qf 的功能!
    
    范例一:搜寻磁盘阵列 (raid) 相关的软件有哪些?
    [root@www ~]# yum search raid
    ....(前面省略)....
    mdadm.i386 : mdadm controls Linux md devices (software RAID arrays)
    lvm2.i386 : Userland logical volume management tools
    ....(后面省略)....
    # 在冒号 (:)  左边的是软件名称,右边的则是在 RPM 内的 name 配置 (软件名)
    # 瞧!上面的结果,这不就是与 RAID 有关的软件吗?如果想了解 mdadm 的软件内容呢?
    
    范例二:找出 mdadm 这个软件的功能为何
    [root@www ~]# yum info mdadm
    Installed Packages      <==这说明该软件是已经安装的了
    Name   : mdadm          <==这个软件的名称
    Arch   : i386           <==这个软件的编译架构
    Version: 2.6.4          <==此软件的版本
    Release: 1.el5          <==释出的版本
    Size   : 1.7 M          <==此软件的文件总容量
    Repo   : installed      <==容器回报说已安装的
    Summary: mdadm controls Linux md devices (software RAID arrays)
    Description:            <==看到否?这就是 rpm -qi 嘛!
    mdadm is used to create, manage, and monitor Linux MD (software RAID)
    devices.  As such, it provides similar functionality to the raidtools
    package.  However, mdadm is a single program, and it can perform
    almost all functions without a configuration file, though a configuration
    file can be used to help with some common tasks.
    # 不要跟我说,上面说些啥?自己找字典翻一翻吧!拜托拜托!
    
    范例三:列出 yum 服务器上面提供的所有软件名称
    [root@www ~]# yum list
    Installed Packages <==已安装软件
    Deployment_Guide-en-US.noarch            5.2-9.el5.centos       installed
    Deployment_Guide-zh-CN.noarch            5.2-9.el5.centos       installed
    Deployment_Guide-zh-TW.noarch            5.2-9.el5.centos       installed
    ....(中间省略)....
    Available Packages <==还可以安装的其他软件
    Cluster_Administration-as-IN.noarch      5.2-1.el5.centos       base
    Cluster_Administration-bn-IN.noarch      5.2-1.el5.centos       base
    ....(底下省略)....
    # 上面提供的意义为:『 软件名称   版本   在那个容器内 』
    
    范例四:列出目前服务器上可供本机进行升级的软件有哪些?
    [root@www ~]# yum list updates  <==一定要是 updates 喔!
    Updated Packages
    Deployment_Guide-en-US.noarch            5.2-11.el5.centos      base
    Deployment_Guide-zh-CN.noarch            5.2-11.el5.centos      base
    Deployment_Guide-zh-TW.noarch            5.2-11.el5.centos      base
    ....(底下省略)....
    # 上面就列出在那个容器内可以提供升级的软件与版本!
    
    范例五:列出提供 passwd 这个文件的软件有哪些
    [root@www ~]# yum provides passwd
    passwd.i386 : The passwd utility for setting/changing passwords using PAM
    passwd.i386 : The passwd utility for setting/changing passwords using PAM
    # 找到啦!就是上面的这个软件提供了 passwd 这个程序!

  • 安装/升级功能:yum [install|update] 软件
    [root@www ~]# yum [option] [查询工作项目] [相关参数]
    选项与参数:
      install :后面接要安装的软件!
      update  :后面接要升级的软件,若要整个系统都升级,就直接 update 即可
    
    范例一:将前一个练习找到的未安装的 pam-devel 安装起来
    [root@www ~]# yum install pam-devel
    Setting up Install Process
    Parsing package install arguments
    Resolving Dependencies  <==先检查软件的属性相依问题
    --> Running transaction check
    ---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be updated
    --> Processing Dependency: pam = 0.99.6.2-4.el5 for package: pam-devel
    --> Running transaction check
    ---> Package pam.i386 0:0.99.6.2-4.el5 set to be updated
    filelists.xml.gz          100% |=========================| 1.6 MB    00:05
    filelists.xml.gz          100% |=========================| 138 kB    00:00
    -> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =============================================================================
     Package                 Arch       Version          Repository        Size
    =============================================================================
    Installing:
     pam-devel               i386       0.99.6.2-4.el5   base              186 k
    Updating:
     pam                     i386       0.99.6.2-4.el5   base              965 k
    
    Transaction Summary
    =============================================================================
    Install      1 Package(s)  <==结果发现要安装此软件需要升级另一个相依的软件
    Update       1 Package(s)
    Remove       0 Package(s)
    
    Total download size: 1.1 M
    Is this ok [y/N]: y  <==确定要安装!
    Downloading Packages: <==先下载!
    (1/2): pam-0.99.6.2-4.el5 100% |=========================| 965 kB    00:05
    (2/2): pam-devel-0.99.6.2 100% |=========================| 186 kB    00:01
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction <==开始安装!
      Updating  : pam                          ######################### [1/3]
      Installing: pam-devel                    ######################### [2/3]
      Cleanup   : pam                          ######################### [3/3]
    
    Installed: pam-devel.i386 0:0.99.6.2-4.el5
    Updated: pam.i386 0:0.99.6.2-4.el5
    Complete!

  • 移除功能:yum [remove] 软件
    [root@www ~]# yum remove pam-devel
    Setting up Remove Process
    Resolving Dependencies  <==同样的,先解决属性相依的问题
    --> Running transaction check
    ---> Package pam-devel.i386 0:0.99.6.2-4.el5 set to be erased
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    =============================================================================
     Package                 Arch       Version          Repository        Size
    =============================================================================
    Removing:
     pam-devel               i386       0.99.6.2-4.el5   installed         495 k
    
    Transaction Summary
    =============================================================================
    Install      0 Package(s)
    Update       0 Package(s)
    Remove       1 Package(s)  <==还好,并没有属性相依的问题,单纯移除一个软件
    
    Is this ok [y/N]: y
    Downloading Packages:
    Running rpm_check_debug
    Running Transaction Test
    Finished Transaction Test
    Transaction Test Succeeded
    Running Transaction
      Erasing   : pam-devel                    ######################### [1/1]
    
    Removed: pam-devel.i386 0:0.99.6.2-4.el5
    Complete!

全系统自动升级

我们可以手动选择是否需要升级,那能不能让系统自动升级,让我们的系统随时保持在最新的状态呢? 当然可以啊!透过『 yum -y update 』来自动升级,那个 -y 很重要,因为可以自动回答 yes 来开始下载与安装! 然后再透过 crontab 的功能来处理即可!假设我每天在台湾时间 3:00am 网络频宽比较轻松的时候进行升级, 你可以这样做的:

[root@www ~]# vim /etc/crontab
....(前面省略并保留配置值)....
0  3 * * * root /usr/bin/yum -y update

从此你的系统就会自动升级啦!很棒吧!此外,你还是得要分析登录档与收集 root 的信件的, 因为如果升级的是核心软件 (kernel),那么你还是得要重新启动才会让安装的软件顺利运行的! 所以还是得分析登录档,若有新核心安装,就重新启动,否则就让系统自动维持在最新较安全的环境吧! 真是轻松愉快的管理啊!

2016021901 – ubuntu截图技巧

myos阅读(9)

  ubuntu系统自带截图功能使用介绍

  ubuntu自定义截图快捷键:Shift+PrtSc

  截取当前窗口快捷键:Alt+PrtSc

  保存全屏截图:PrtSc

  

tmux复制到windows剪贴板/粘贴板的坑

myos阅读(8)

以下所有操作都是在windows下面用putty连接linux centos6的情景下。

 

一直很纳闷为什么在tmux模式下不能把复制到的文字放到系统的粘贴板里面呢?通过层层阻碍,终于找到了原因。

去掉 ~/.tmux.conf中

#设置鼠标可用
#setw -g mode-mouse on

如果你在最开始的时候学别人的配置,加上了这个选项,那么你就会发现在tmux下不能复制文字,去掉就可以了。

现在就可以直接选中要复制的文字,然后右键粘贴。

 

copy-mode模式下复制粘贴:

bind-key [ 进入在tmux的copy-mode下,可以使用Space进入选中模式,按Enter复制并退出,按q不复制并退出。

这种复制不会在windows剪贴板上。

可以通过tmux show-buffer显示。

 

vim模式下复制到windows剪贴板,这个tips参考自:url

复制的时候,如果直接用鼠标复制的时候,是又vim处理的,需要按住shift才是xterm处理的,
后来用vnc连server发现在vim中也是同样适用的。

 

 

Linux学习6-Linux常用命令(1)

myos阅读(10)

1、命令格式命令 [-选项] [参数]

 
 

例如:ls -la /etc

 
 

说明:

1)个别命令使用不遵循此格式

2)当有多个选项时,可以写在一起

3)简化选项与完整选项 (-a等于 –all),简化选项使用一个’-‘号,完整选项通常使用两个’-‘号

 
 

2、目录处理命令:ls

 
 

命令名称:ls

命令英文原意:list

命令所在路径:/bin/ls

执行权限:所有用户

功能描述:显示目录文件

语法:ls 选项[-ald] [文件或目录]

-a 显示所有文件,包括隐藏文件

-l 详细信息显示

-d 查看目录属性

-h人性化显示(用来格式化文件大小)

 
 

直接输入ls就可以看到根目录下的文件

 
 


 
 

ls -a (all)可以查看目录下的所有文件包括隐藏文件,Linux中以.开头的文件为隐藏文件

 
 


 
 

ls -l (long)可以查看文件的详细属性

 
 

在Linux系统中用户和文件的关系

  • 所有者(User)所有者一般为创建文件的用户,一个文件只有一个所有者,所有者的身份是可变更的。
  • 所属组(Group)文件所属的一类用户,一个文件只有一个所属组。
  • 其他人(Other)既不是所有者,也不是所属组中的用户。

 
 

-rw——-. 1 root root 790 Apr 12 20:57 anaconda-ks.cfg

 
 

rw-.

文件类型(-二进制d目录l软链接文件)

rw-

代表所有者的权限

代表所属组的权限

代表其他人的权限

r读权限 w写权限 x执行权限

1

文件的引用计数,代表文件被调用或引用过的次数

root

所有者

root

所属组

790

文件的大小(字节)使用-h选项可以根据文件大小自动转换为K,M等

790 Apr 12 20:57

文件最后修改时间

anaconda-ks.cfg

文件名

 
 


 
 

ls -d (directory)查看目录属性

 
 


 
 

 
 

 
 

 
 

 
 

 
 

3.awk数组详解及企业实战案例

myos阅读(3)

awk数组详解及企业实战案例

3.打印数组:
  1. [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]="zhuzhu";for(key in array) print key,array[key]}'
  2. 1 zhurui
  3. 2 zhuzhu
  4. [root@nfs-server test]#
  1. [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]="zhuzhu";}END {for(key in array) print key,array[key]}'/etc/hosts
  2. 1 zhurui
  3. 2 zhuzhu
  1. 把文件内容第一列作为下标,第二列作为值,放入数组然后输出。
  2. [root@nfs-server test]# cat t3.log
  3. 1 zhurui
  4. 2 zhuzhu
  5. [root@nfs-server test]# awk 'BENGIN{S[$1]=$2;}END{for(k in S) print k,S[k]}' t3.log
  6. [root@nfs-server test]# awk '{S[$1]=$2;}END{for(k in S) print k,S[k]}' t3.log
  7. 1 zhurui
  8. 2 zhuzhu
4、脚本:
  1. #!/bin/awk
  2. BEGIN{
  3. array[1]="zhurui"
  4. array[2]="zhuzhu"
  5. for(key in array)
  6. print key,array[key];
  7. }
  1. [root@nfs-server test]# awk -f t2.awk
  2. 1 zhurui
  3. 2 zhuzhu
  4. [root@nfs-server test]#
5.把文件内容第一列作为下标k,第二列作为值S[k],放入数组S[]然后输出。
  1. [root@nfs-server test]# cat t3.log
  2. 1 zhurui
  3. 2 zhuzhu
  4. [root@nfs-server test]# awk 'BENGIN{S[$1]=$2;}END{for(k in S) print k,S[k]}' t3.log
  5. [root@nfs-server test]# awk '{S[$1]=$2;}END{for(k in S) print k,S[k]}' t3.log
  6. 1 zhurui
  7. 2 zhuzhu
运用综上理解,请做考试题:处理以下文件内容,将域名取出并根据域名进行计数排序处理:(百度和SOHU面试题)
test.log
  1. [root@nfs-server test]# awk -F "/"'{S[$3]=S[$3]+1;}END{for(k in S) print k,S[k]}' test.log
  2. mp3.judong.org 1
  3. post.judong.org 2
  4. www.judong.org 3
最终答案:
  1. [root@nfs-server test]# awk -F "/"'{S[$3]++}END{for(k in S) print k,S[k]}' test.log|sort -rn -k2|head
  2. www.judong.org 3
  3. post.judong.org 2
  4. mp3.judong.org 1
  5. [root@nfs-server test]#
例3:统计Web日志单IP访问排名(这个工作中常用,面试也常用)

对于统计访问连接IP个数的答案为:
  1. [root@nfs-server test]# awk -F " "'{S[$1]=S[$1]+1;}END{for (k in S) print k,S[k]}' access-test.log|sort -rn|head ##此方法较复杂
  2. 10.0.0.3775
  3. 10.0.0.1322
  4. 10.0.0.1245
  5. 10.0.0.1202
  6. 10.0.0.1082
  7. 10.0.0.1001
  8. [root@nfs-server test]# awk -F " "'{S[$1]++;}END{for (k in S) print k,S[k]}' access-test.log|sort -rn|head ##上一步的简化版
  9. 10.0.0.3775
  10. 10.0.0.1322
  11. 10.0.0.1245
  12. 10.0.0.1202
  13. 10.0.0.1082
  14. 10.0.0.1001
  15. [root@nfs-server test]# awk -F " "'{Z[$1]++;}END{for (k in Z) print k,Z[k]}' access-test.log|sort -rn|head
  16. 10.0.0.3775
  17. 10.0.0.1322
  18. 10.0.0.1245
  19. 10.0.0.1202
  20. 10.0.0.1082
  21. 10.0.0.1001
方法1:
方法2:
 
例4:统计企业工作中高并发linux服务器不同网络连接状态对应的数量

方法1:
  1. [root@nfs-server test]# awk '/^tcp/ {S[$NF]++}END{for(k in S) print S[k],k}' netstat.log|sort -rn|head
  2. 105 TIME_WAIT
  3. 101 ESTABLISHED
  4. 55 FIN_WAIT2
  5. 7 FIN_WAIT1
  6. 5 SYN_RECV
  7. 5 LISTEN
  8. 3 LAST_ACK
  9. 1 CLOSING
  10. [root@nfs-server test]#
方法2:
  1. [root@nfs-server test]# awk '/^tcp/ {print $NF}' netstat.log|sort|uniq -c|sort -rn|head
  2. 105 TIME_WAIT
  3. 101 ESTABLISHED
  4. 55 FIN_WAIT2
  5. 7 FIN_WAIT1
  6. 5 SYN_RECV
  7. 5 LISTEN
  8. 3 LAST_ACK
  9. 1 CLOSING
  10. [root@nfs-server test]#
例5:
分析图片服务日志,把日志(每个图片访问次数*图片大小的总和)排行,取top10,也就是计算每个url的总访问大小

说明:范例7的生产环境应用:这个功能可以用于IDCCDN网站流量带宽很高,然后通过分析服务器日志哪些元素占用流量过大,进而进行优化裁剪该图片(见老男孩发布的《淘宝的双十一超大流量应对文章点评》),压缩js等措施。

本题需要输出三个指标: 【访问次数】    【访问次数*单个文件大小】   【文件名(可以带URL)】

解答

测试数据

59.33.26.105 – – [08/Dec/2010:15:43:56 +0800] “GET /static/images/photos/2.jpg HTTP/1.1″ 200 11299“http://oldboy.blog.51cto.com/static/web/column/17/index.shtml courseId=43” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)”

59.33.26.105 – – [08/Dec/2010:15:43:56 +0800] “GET /static/images/photos/2.jpg HTTP/1.1″ 200 11299“http://oldboy.blog.51cto.com/static/web/column/17/index.shtml courseId=43” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)”

59.33.26.105 – – [08/Dec/2010:15:44:02 +0800] “GET /static/flex/vedioLoading.swf HTTP/1.1″ 200 3583“http://oldboy.blog.51cto.com/static/flex/AdobeVideoPlayer.swf width=590&height=328&url=/[[DYNAMIC]]/2” “Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)”

124.115.4.18 – – [08/Dec/2010:15:44:15 +0800] “GET / = HTTP/1.1″ 200 46232 “-” “-“

124.115.4.18 – – [08/Dec/2010:15:44:25 +0800] “GET /static/js/web_js.js HTTP/1.1″ 200 4460 “-” “-“

124.115.4.18 – – [08/Dec/2010:15:44:25 +0800] “GET /static/js/jquery.lazyload.js HTTP/1.1″ 200 1627 “-” “-“

法一:通过两个数组来计算

因为我们要的最终结果是某个文件的访问次数和消耗的流量,所以考虑建立以文件名为索引的两个数组,一个存储访问次数,一个保存消耗的流量,这样当使用awk按行遍历文件时,对次数数组+1,同时对流量数组进行文件大小的累加,等文件扫描完成,再遍历输出两个数组既可以得到该文件的反问次数和总的流量消耗。

[root@locatest scripts]# awk ‘{array_num[$7]++;array_size[$7]+=$10}END{for(x in array_num){print array_size[x],array_num[x],x}}’ access_2010-12-8.log |sort -rn -k1|head -10 >1.log

法二:

[root@locatest scripts]# awk ‘{print $7″\t” $10}’ access_2010-12-8.log|awk ‘{S[$1]+=$2;S1[$1]+=1}END{for(i in S) print S[i],S1[i],i}’|sort -rn|head -10 >2.log

[root@locatest scripts]# diff 1.log 2.log

[root@locatest scripts]# cat 1.log

57254 1 /static/js/jquery-jquery-1.3.2.min.js

46232 1 / =

44286 1 //back/upload/course/2010-10-25-23-48-59-048-18.jpg

33897 3 /static/images/photos/2.jpg

11809 1 /back/upload/teacher/2010-08-30-13-57-43-06210.jpg

10850 1 /back/upload/teacher/2010-08-06-11-39-59-0469.jpg

6417 1 /static/js/addToCart.js

4460 1 /static/js/web_js.js

3583 2 /static/flex/vedioLoading.swf

2686 1 /static/js/default.js

 

[转]十年前的老文:以 Linux 的名义

myos阅读(4)

一、灰姑娘的狂欢

今年初,林纳斯·托瓦兹承认:“如果在12年前,有人告诉我Linux会发展到今天的模样,我肯定会惊得目瞪口呆。”

托瓦兹说的是实话。1991年,这名21岁的芬兰赫尔辛基大学的学生,偶然地制造出了Linux这个小玩具,没有人能想到它后来被用作杀人越货的武器,更重要的,没有人能想到它最终成为一种讨伐异数鼓动圣战的宗教。

不过,在最初相当长的时间里,Linux并不特别招人待见,在很大程度上,它只是一群高级程序员和发烧友手中自娱自乐的玩物。当然,这个玩物有着某 些后来看起来极其重要的特性:免费、源代码开放、可自由复制修改传播。正是这些特性,使它可以被赋予各种千奇百怪的教义,逐渐神圣化,并且得以迅速扩散。

一样东西有没有价值,或者有多少价值,在很大程度上取决于有钱人怎么看待它,这就像一种动物值多少钱,常常取决于“美食家”打算花多少钱去吃它。

在度过了漫长而寂寞的童年之后,到1999年前后,开放源码的Linux终于引起了华尔街和一些商业企业的关注,一如互联网曾经引起的那种关注。 1999年,泡沫四溢的互联网已经被赋予重写经济学的崇高使命,Linux,这个相貌平平发育不良的少女,忽然被发现,她身上有着某种特殊的潜质。就像用 互联网涂改经济学已经带来无尽的机会,Linux也暗含着另一种诱人的可能,即充当Windows的“掘墓人”。

这样的发现当然是激动人心的。想想看,掘Windows的墓,通俗点说,不就意味着可以重新分配微软持有的那些财富吗?在微软已经基本等同于一座造 币工厂的时候,瓜分微软,就是瓜分财富,就是打劫银行。既然已经知道那座墓里藏着很多财宝,押宝“掘墓人”Linux,无非是押宝那些眼下还属于微软的财 宝。而且,那些有钱人从来不在乎花点钱为投机活动置办一件迷人的外衣。所以,张君拿着武器抢劫运钞车,是死罪;有钱人拿着Linux瓜分微软,是正义。

在大量.COM企业上市圈钱的热潮中,1999年8月11日,以开发Red Hat Linux著称的Red Hat公司的股票在Nasdaq挂牌,股价当日狂升482%。4个月后,历史性的1999年12月9日,Red Hat股价窜升至286美元,免费的价值借助墨绿色的美元,得以完整体现。不过Red Hat的奇迹跟另一只Linux概念股比起来,只能算小巫见大巫。同一天,VA Linux的股票以30美元的价格首次公开发行,上市当天即创下股价暴涨733%的前无古人的记录,当日最高价达到320美元,最终以239美元收盘。 VA Linux公司的奠基人兼投资人拉里·奥古斯丁一夜间身家暴涨16亿美元,成功跻身富豪行列,成为Linux帮助实现“美国梦”的又一个活生生的例子。

1999年12月9日,Linux所倡导的免费与开放,就以这种令人瞠目结舌的方式,压起了赚大钱的跷跷板。这个日子从它被创造出那天起,就成了 Linux概念股的一个永远无法再现的历史标本,但它所带动的Linux概念的投机热潮,在之后一段时间内还不停地缔造出诸如Linux网站开通一周就被 高价收购的传奇故事。想发财?鼓捣Linux吧。据统计,1999年投到Linux站点的资金高达1000亿美元。

罗大佑早在20年前就说过,“今天的欢乐将是明天创痛的回忆”。今天,曾经集万千宠爱于一身的VA Linux,已经把Linux从公司名称中拿掉了,改为VA Software,但这仍然无法改变作为垃圾股其股价徘徊在0.9美元上下的命运。Red Hat好一些,6美元左右的股价应该可以让人稍感欣慰。

十年前的老文:以 Linux 的名义十年前的老文:以 Linux 的名义

1999年12月9日,是一位老妇人永远辉煌的18岁。

这几乎是那个灰姑娘故事的现代翻版,不过在这个版本中,灰姑娘并没跟王子过上“幸福快乐的日子”,狂欢的舞会之后,她重新回到了属于自己的生活,只 是曾经沧海的她心境已不再像从前那样平和。无论如何,这场狂欢让相貌平平发育不良的Linux得以广为人知,算是做了一个价格高昂的广告,其广告效应在其 后相当长的日子里逐渐显现出来。起码,懂Linux的程序员变得比以前抢手了,工作容易找,还可以要个高价,怎么说都比满大街的MCSE显得贵重。

短时间内,国内也雨后春笋般地冒了一批搭Linux顺风车的公司,如Xteam、蓝点等。他们徘徊在狂欢舞会的大门外边,东张西望搔首弄姿。他们需 要一张舞会的门票,他们渴望被有钱人领到明亮的灯光下,渴望被他们带回家,从此颐指气使锦衣华食。其实中国人并不偏爱Linux,也并不认同Linux所 宣扬的理念,所以在Linux的发展历程中,难得见到国内软件公司和程序员的贡献,那不是他们的兴趣所在。

Linux的价值,并不在于它的免费和开放,而在于这种免费和开放,让投机的成本空前降低。所以在Linux周围,一时间挤满了投机分子,大家面面相觑心照不宣,真实的欲念被包裹得光鲜而华美。不过归根结底,阿Q的革命诉求,其实只是在秀才娘子的宁式床上跟吴妈困觉而已。

Xteam紧赶慢赶总算赶上了香港创业板,蓝点则通过收购美国上市公司也实现了上市的夙愿。打起Linux的旗号,多多少少总会有些好处。至少,天上掉馅饼的时候,你张开了嘴。

 

二、免费免出生意

投资Linux的银行家和投资人,后来大都很失意。爬上高峰之后,Linux股价纷纷做起了自由落体运动,把攥着Linux股票的人急得直想跳楼。

与银行家和投资人关心股票价格不同,商业企业可能更关心Linux这种免费操作系统能给自己带来什么样的直接和间接利益。中国人讲“在商言商”,西 方人说“business is business”,一味地高举免费的大旗,以打倒copyright为己任,丝毫不关心挣不挣钱,那是Linux发烧友,而不是商人。如果商人肯掏出真 金白银支持Linux,并不是因为他们比较慈善,而是因为这种支持,可以给他们带来更多的真金白银,或者可以折算成真金白银的其他利益。他们并不特别地热 爱免费,如果免费能够免出更大的生意,他们当然乐意从生意的角度,支持一下免费。

当越来越多的重量级厂商宣布支持Linux,尽管不可能带来股票狂升时那种令人窒息的心跳,但免费的Linux却出现了真正的商机。

《商业周刊》断言:“自由软件业的开发者大部分水平不高,不可能制造高端的企业级产品”。这话让很多Linux铁杆儿很不受用,甚至很屈辱。但事实正是如此,商业企业的大规模介入,才让出身卑微的Linux真正有了出人头地的机会。

当今这样一个发达的商业社会,包装一种操作系统,并不比包装一个歌星更有难度。Linux将具有何种价值,取决于你赋予它何种价值。大把的美金砸进去,再没有价值的东西,也会变得很有价值。如果出资人本身就是大腕,垃圾被包装成偶像,都没什么奇怪的。

对Linux的实质支持,来自大腕IBM。

十年前的老文:以 Linux 的名义

IBM的古老和庞大,让它拥有别的公司所不具备的巨大的市场号召力,“跟我们一起走,我们是大公司”,IBM这种舍我其谁天生领袖的做派,通常是难以抗拒的。

在操作系统领域已经几乎无所作为的IBM,除了投入巨资进行Linux的研发,同时它还拥有全世界规模最大的专业化的Linux开发和服务团队。 IBM的加入,让Linux的形象一下子有了质的提升,彻底打消了人们对Linux只是个业余玩家的业余作品的印象,和由此产生的疑虑。1999年,时任 IBM服务器部门负责人的彭明盛,就做出了进军Linux的决策。第二年,IBM投入10亿美元,大规模展开Linux战略。回报是明显的,也是可以预料 的。现在,运行Linux操作系统的大型主机已占IBM大型主机总销量的15%。2002年,IBM从Linux市场上赚取了10亿美元。对实用主义的 IBM来说,Linux可以拿来赚钱,这就够了。至于Linux拥护者所看重的道义,在生意之余夸夸其谈几句也不是不可以,但IBM从来不会把道义与生意 混为一谈。

在支持Linux的知名厂商中,还包括Intel、Dell、HP这样的硬件厂商。这很好理解,如果免费Linux可以帮助他们卖出更多的收费的硬 件,何乐不为?这里面同样不包含任何道德或道义倾向。其实,在打Linux主意的人中,相当一部分实际打的是微软的主意,他们把对微软的憎转化为对 Linux的爱,他们希望Intel们也跟他们一起恨微软,爱Linux。不过,Intel们并没有道德家们那样的爱憎,因此你不能指望为了支持 Linux,他们会放弃支持Windows。生意就是生意,在Linux和Windows之间,并不存在谁比谁更正义的问题,用户需要的就是合理的。因 此,如同他们在Windows上已经赚到了钱一样,他们在Linux上也已经赚到了钱,而且肯定会赚更多的钱。

想拿Linux杀人的公司也有,Sun就是一个。Sun坚持认为,“Linux仍然是轻量级的选手”,无法与Sun昂贵的服务器产品相提并论,尽管 Sun的用户常常并不这么想。Sun认为,Linux的发展前途在于桌面PC操作系统,而那正是宿敌微软的势力范围,Sun一心盼望着Linux能将战火 烧到微软的卧室。不过现实很残酷,与Linux在桌面领域不成气候形成鲜明对照的,是它在服务器领域的突飞猛进。

IDC公司的数据显示,在过去的5年里,Unix在服务器操作系统的市场份额已经减少了一半,而Windows和Linux操作系统几乎增长了3 倍。以前,Unix主机一直是昂贵的代名词,微软的NT服务器凭借低价策略抢占了Unix的大片江山,已经让Sun这样的传统Unix厂商恨得咬牙切齿, 现在又有了不要钱的Linux,这让Sun们顿时觉得生不如死。Linux 12年来最大的成就,或许就是让Unix主机变得奢侈而且不必要,从而让Unix厂商也变得多余而且不必要。

尽管Sun也在2002年中发布了Linux战略,但2002年第四季度,其Unix服务器销售额达到6.75亿美元,而Linux服务器的销售额 只有象征性的130万美元。可见Sun的Linux战略只是一种姿态,肥美的Unix服务器利润让它对Linux想爱却不敢爱。美林的分析师米卢诺维奇在 一份给客户的报告中称,“我们认为Sun可能会变得不再重要的论调,在圣克拉拉(Sun的总部)或许会不受欢迎,但是我们看不到太多可以改变我们观点的迹 象。”Sun的服务器市场份额今年第一季度由去年同期的6.3%下降到了4.9%,以至于很多人怀疑,假如Sun想把自己卖掉,会不会有人对它感兴趣。 Sun想用Linux杀人,自己却几乎被杀,Linux这种敌我不分的两面性,让Sun尝尽苦头。

把Linux当***包用的,还有Oracle,不过与Sun不同,Oracle既要赚钱,又要杀人。尽管在拉里·埃利森的嘴里一直都充满了对免费、 开放的讴歌和对昂贵、封闭的诅咒,但Oracle的数据库和其他企业级产品既不免费,又不开放,我们却从未听到埃利森诅咒过自己。Oracle一边对微软 骂骂咧咧,一边忙不迭地借助免费、开放的Linux恶狠狠地赚钱,这样它就把所有能从Linux上捞到的好处全都捞到了。

或许Oracle压根就认为,只有自己的昂贵、封闭才是正当的。不过,Oracle也并非高枕无忧,它的利润丰厚的数据库产品正受到另一种开源软件 ——MySQL数据库的威胁。据调查,全世界目前已经有将近400万台低端服务器安装了MySQL开源数据库软件,著名的Yahoo和Google都成为 MySQL的用户。业内人士估计用不了多久,MySQL就会对眼下由微软、Oracle和IBM所主导的高端服务器软件市场构成真正的威胁,就像目前 Linux威胁着Windows一样。

eWEEK Labs/PC Labs最近对5种数据库产品所进行的测试,甚至得出了MySQL最新的4.0.1版本性能可以和Oracle 9i媲美的结论。不管这一结论有多大的片面性,它都会提醒Oracle,永远不要把矛和盾放在一起卖,那样,矛才是世上最锋利的矛,盾才是世上最坚固的 盾。对Oracle来说,免费并且开放的Linux是好的,免费并且开放的MySQL是坏的,昂贵并且封闭的Oracle是好的,昂贵并且封闭的 Windows是坏的,这既是一种道义立场,也是一种商业立场。

 

三、商业化的自由

越来越多的商业企业对Linux的介入,正在侵蚀并分化着Linux社会,让Linux长期恪守的种种规则面临考验。

十年前的老文:以 Linux 的名义

最近,托瓦兹辞去了他在芯片公司Transmeta的工作,正式成为OSDL(开放源代码开发实验室)的一个全职工作人员。OSDL成立于2000 年,得到IBM、Intel、HP、日立、CA等大公司的资金支持。“感觉有一点怪,”托瓦兹说,“最终我正式做起过去12年来一直在做的工作,但是随着 新版Linux的发布,我觉得能够专心于Linux的开发是很有意义的。”

托瓦兹没说出来的是,过去12年,他需要一份收入,以支持他业余时间开发Linux。现在,他成了免费的Linux的拿工资的开发者,跟仍然把业余时间奉献给Linux社区的人们相比,托瓦兹无疑显得很职业。

早在2000年,已经有人质疑,一个人操纵Linux发展的现状还要持续多久?尤其当大量企业有切身利益在其中的时候,托瓦兹的我行我素和无法全身 心投入,引来了很多非议。尽管在Linux社区,托瓦兹的声望和影响力毋庸置疑,但他仍然不得不面对大规模的设备制造商和软件开发商的压力。

由于Linux坚持分散的集市式的开发方式,厂商对Linux的开发过程很难进行干预,因而也就无法对软件开发的进度进行任何控制。因此,麻省理工学院的教授Michael Cusumano认为,开放源代码无法与商业公司进行很好的协同。

表面上,托瓦兹似乎对四周出现的种种非议并不介意,他很在意自己所从事的Linux这份工作,以及由这份工作带来的荣誉和责难,他认为主导 Linux开发的应该是自己,以及自己的那个彼此信赖的群体,“而不是一个公司或一个‘Linux实验室’”。托瓦兹说:“Linux黑客行事的理由是他 们觉得这很有趣,他们喜欢与他人分享这些有趣的事情。瞧,你既能从你正在做有趣的事情这一事实中得到娱乐,你也可以因此获得社会价值。这就是为什么与许多 黑客一起工作,你会获得Linux网络的基本效果,因为他们喜欢他们所做的事情。”但Linux这种有别于“教堂式”软件开发的方式,却并不被很多厂商所 接纳。尤其当Linux所牵涉的利益关系越来越复杂的时候,这种质疑就显得越来越强烈。

Gartner分析师乔治·韦斯说:“开放源代码的早期,它更多的是一种慈善事业并且开发人员与费用无关,但商家总是要赚钱的,只有在面临股东分红时他们才会认真考虑慈善事业。在开源Linux社区的理想主义和商家强烈的利益动机之间,他们的关系正变得日益紧张。”

一家Linux独立软件开发商的技术副总裁Tom Adelstein说:“当IBM说它今年将向Linux投入10亿美元时,不管有没有托瓦兹,他们都会让Linux为他们工作。”事实上,IBM确实正 在成为Linux发展的新的主导力量,尤其在对客户和其他厂商的影响力上,没有人可以取代IBM。IBM希望它对Linux的这种主导,能够与它巨大的人 力、财力投入成比例,这是很自然的。今年1月份的“LinuxWorld技术大会”,主宰者不再是“纯粹”的Linux公司——Red Hat和Ximian等等,而是传统的IT巨头IBM、Intel、HP和Dell,所以《商业周刊》感慨道:Red Hat和Ximian公司的技术人员“好像被挤到了地板下面”。

自由软件理念的忠实信徒对于商业公司的介入一直心怀芥蒂,他们当中的很多人视Linux为一种自由精神的象征,他们本能地反对被金钱控制,反对 Linux的商业化。自由软件教父Stallman特别地反复强调,自由软件中的“自由”就是自由,跟费用无关。在更早的时候,Stallman甚至把接 受风险投资的Red Hat斥为自由软件的寄生虫。

每个人都可以把各种自由的源代码收集到一起,打个包,然后贴上个自己的商标,比如Red Hat或者Red Flag之类的,拿到街上卖。不过随着越来越多的不同商标的商业化Linux版本的出现,不同版本之间的兼容性越来越成为一个问题,而这将直接影响商业企 业对Linux好不容易建立起来的信任。同时,人们越来越担心Linux将会重蹈Unix走向分化的覆辙,一个四分五裂的Linux,将会变得像Unix 一样逐渐失去价值。

1992年5月,由Caldera(SCO Group)、Conectiva、SuSE和TurboLinux发起组建了UnitedLinux联盟,其初衷是建立统一的Linux标准,避免彼此 互不兼容。不过这个联盟一成立,立刻招致另一Linux厂商Mandrake的激烈反对,Red Hat则置身事外,对联盟显得毫无兴趣。Red Hat的开发人员艾伦·考克斯在评论UnitedLinux时说:“一大问题是,他们最后能不能供应单一连贯的产品,或只是乌合之众。”有一种说法 是,UnitedLinux是一个弱者的联盟,4家公司所处的状况均不太好,因此希望通过企业联合,以求生存空间。这种以销售战略为目的结盟,显然会得到 商业企业的支持,事实上,Intel、AMD、IBM、CA、SAP等企业已经明确宣布支持UnitedLinux,不过这些企业中的大多数同时也是 Red Hat的支持者。无论如何,厂商还是乐于看到Linux实现标准化,也乐于看到Linux厂商为迎合商业化而做出的努力。

Linux社区也逐渐发现,他们仍然不得不生活在强大的商业社会的包围中,理想主义的他们也不得不开始学会妥协。最近,托瓦兹提出的在Linux中 增加数字版权管理(DRM)的提案,在Linux社区引发了一场争论。数字版权管理是由微软和Intel所发起的“可信赖计算”的一个组成部分,其核心在 于内容发行商有权决定在用户的计算机上其内容被使用的权限,而这一向被认为是与开源社区的自由理念背道而驰的。托瓦兹称:“我现在是‘欧本海默’(原子弹 之父),我拒绝在Linux上玩政治。我想你可以用Linux做任何你想做的事,哪怕那事我自己也未必认可。”他说:“无论你做什么地狱之钟都会敲响,我 只是一个工程师,想让最好的操作系统成为可能。”

像其他事物一样,Linux并不是一个公平的游戏,有人赚到了钱,有人获得了名,更多的人什么都没有,他们被浓缩为一个统一的而且很有势力的代号, 叫做Linux社区。众多的商业大腕,乃至政府,主动出面为这个Linux社区撑腰,自由应该可以卖个好价钱。至少眼下,什么都没有的他们仍是自由的,商 业化是别人的事情。

 

四、鼓噪开源政治

Linux只是一种操作系统,在没有利益驱动的年代,它甚至仅仅是一种没有分量没有影响的非主流操作系统。不过,这些已经变成革命家史的一部分,适当的时候可以拿出来痛说一番,以供忆苦思甜。

伴随着商业化进程加快,各种看得见的利益逐渐呈现出来,已经步入上流社会的Linux慢慢不再只是一种操作系统,高贵的它被赋予了自由、开放、民主、正义、自主、安全等等名目繁多的与其新身份相符的崇高教义,它正在成为一种不容置疑的宗教,一种判别敌我的政治标签。

十年前的老文:以 Linux 的名义

谁是我们的朋友?谁是我们的敌人?看看他对Linux的态度就知道了。在Linux面前,世界变得从未有过的单纯,从未有过的泾渭分明,要么你是高尚的Linux支持者,要么你是邪恶的Linux反对者,没有第三种立场。

与Linux在西方的发展受制于主流IT企业的态度不同,在中国,它更多是受政府的态度左右。Gartner亚太区硬件平台业务首席分析师马修·布恩说:“在中国政府致力发展中文软件的政策推动下,Linux在中国的发展十分突出。”

尽管中国人对Linux的贡献微不足道到令人惭愧,但这并不妨碍中国一夜之间成为闻名世界的Linux天堂,成为推动Linux发展的典范。由于 Linux的投机成本很低,可能获取的利益却很大,因此在中国,张口闭口拿Linux说事儿,就成为一种政治正确而且有利可图的时尚。聪明的中国人,把开 源社区的源代码拿过来,改一改包一包,就有了一堆国产的、自主的操作系统、办公软件、防火墙。

这种局面的出现,首先得益于院外游说的成功。尽管最早从事Linux开发的是Xteam和蓝点,并且借Linux的东风上了市,但很可惜,这两家公 司混到连负责推动Linux发展的政府要员都不知道他们存在,甚至没听说过他们的名字,证明他们的确很失败,至少政治上很不成熟。因此,他们落到九死一生 苟延残喘的境地,也就不足为怪。归根结底,Xteam和蓝点,只是两家由工程师经营的公司,他们只能眼睁睁看着Linux的所有实惠,被政治家经营的公司 拿走。

现在的Linux利益集团,关心政治远胜于关心技术。他们知道秀应该怎样作,效果该怎样渲染,知道怎样才能让自己显得辗转反侧忧国忧民。他们请出了 院士、名流充当说客,搬出了民族利益、国家安全作为幌子,时而痛陈时弊,时而表白忠心,不厌其烦,天天讲月月讲年年讲,终于说动了政府充当Linux的最 大买家。很难设想,没有政府采购,新一轮的Linux大炼钢铁运动会在中国出现。

据分析,到2006年,政府软件采购的支出将达到1600亿元,你怎么好意思不为之心动。

第一波Linux高潮,以Xteam和蓝点为代表,追求的是圈钱、上市,基本算是一种商业投机。眼下这波Linux新高潮,则是政府背景的所谓“国 家队”带头,中的外的土的洋的齐参与,直奔政府采购而来,基本可以归为政治投机。经过多年深入揭批,以微软为代表的封闭源代码的商业软件尽管尚未批倒,但 已基本批臭,在种形势下,选择Linux,就等于站到了人民的一边,站到了正确的一边,站到了政府采购的一边。这是一批“专注于”政府采购的新型政治家商 人,他们懂得用“开源”来装点封闭的事实,因此他们不会走上Xteam和蓝点那样的绝路。

政治家商人知道什么该说,什么不该说。他们对Linux的好处喋喋不休,但对GPL(通用公共许可协议)和其他开源协议却噤若寒蝉。经过他们的眼 睛,那些现成的开放源代码,全都幻化成一摞一摞的人民币,他们所要做的,只是把源代码拿过来,兑换成现金。莫测高深的高科技,从未如此通俗易懂,从未如此 和蔼可亲。他们因此喜欢自由,喜欢开放,当然都是别人的。

在中国蘑菇般遍地丛生的Linux产品中,大部分既不免费,也不开放,但他们仍然说,他们做的是Linux,是开源软件。关于开放源代码,他们的解释极为精彩:

“据我们考察,全世界开放源代码的项目达数万个,国人真正贡献过代码的项目屈指可数,好像中国人对贡献开放源代码兴趣不大,因此我们认为,在目前阶 段就把我们的源代码全部开放只能把市场搅乱,让我们失去持续发展的能力,而对我国软件产业的发展却没有什么实质性地促进。等到中国人都非常支持开放源代 码,并且有很多人参与,而开放我们的代码确实对国产通用软件的发展有帮助的时候,我们会毫无保留地开放我们的源代码。”(参见北京红旗中文贰仟软件技术有 限公司技术总监张昀:《RedOffice和开放源代码》)

他们就这么毫不脸红地把开源社区的志愿者,变成了自己公司的打工仔,工资都省了,他们自己则摇身一变成了爱国的志士、民族的功臣。世界上真的没有比这更划算的生意了,也真的没有比这些家伙更精明的商人了。

所以,那些全世界都知道源代码的Linux防火墙,被装到要害部门的网络上,他们一边往裤兜里塞钱,一边还要告诉你,这个,很安全。

政治家商人与工程师商人最大的不同,就是政治家需要一个敌人,需要一个可供击打的沙袋。他们一致认为,微软是最合适的人选。尽管他们真正的敌人,实 际上是另一些卖弄Linux的人,但他们仍然需要一个名义上的敌人,一个可以用“邪恶”概括的概念,一个可以唤醒民众同仇敌忾的对象。攻击微软,以及微软 所代表的资产阶级的知识产权政策,可以让他们理直气壮。

在他们卖力地攻击微软和知识产权的时候,他们自己却比微软更懂得如何保护不属于自己的知识产权。他们这么做,不但不会脸红,反而感到光荣。 Linux和其他开源软件在这里被作为工具,用以制造对任何合法商业软件的恐惧、不确定与怀疑(FUD)。在微软不让我们看源代码的时候,我们说它留有后 门,不安全;当微软决定把源代码开放给我们看的时候,我们又说这不是真正的开放源代码,不可能真的100%开放,“只需区区的几行源代码,就足以在一个软 件中引入‘后门’”(倪光南语)。这种FUD的确很到位,至少已经造成政府的恐慌。

一个铜板总有两面,但在我们的铜板上,两面都写着“正义”,所以我们就总是在代表“正义”说话。于是,借开放之名,行不开放之实,借自由之名,行商 业之实,这件事我们干得得心应手出神入化。这就有点像美国人借大规模杀伤性武器之名,证明出兵伊拉克的必要,又借邪恶的萨达姆垮台,证明出兵结果的正确。 最终也没人告诉我们,大规模杀伤性武器在哪儿。

布什炒大规模杀伤性武器干掉了萨达姆,我们炒Linux赚到了钱,政治看起来相当实惠。

 

五、妖魔化公敌SCO

SCO是一家小公司,这点很重要。妖魔化一家小公司,远比妖魔化一个微软这样庞然大物要省时省力得多。

十年前的老文:以 Linux 的名义

当然,SCO是咎由自取。很多人追问,难道为了赚钱就可以这么无耻么?不过我想,SCO基本上应该算是一个守法经营的企业,和大多数苦苦求生的企业 并无二致,即使无耻,也仍是在法律许可的范围内无耻。所以,SCO的咎由自取,跟坑蒙拐骗无关,跟欺行霸市无关,它错就错在,告谁都可以,万万不该把 IBM给告了。把IBM告了也没关系,万万不该招惹Linux及其拥趸。

这下,SCO的麻烦就大了。

在写给开源组织的公开信中,SCO的CEO Darl McBride也承认,“我们指出在当前Linux软件开发模式中,存在着显而易见的知识产权问题,因而,惹恼了开放源码组织的某些人物”,他还表示了这 种担心,即“当公司采取一些商务或者法律行动时,由于惹恼了开放源码组织,从而使他们担心成为下一个遭受计算机攻击的对象”。不过,他显然还是低估了这种 攻击的破坏力。

在SCO于今年3月指控IBM把属于SCO的Unix代码不适当地放到了Linux中之后,SCO网站遭受了3次拒绝服务(DoS)攻击,这些攻击 明显是由Linux及开源组织的拥戴者发动的。对于这些网络痞子的数字化打砸抢行为,开源组织的领导人第一反应就是否认。在5月初SCO网站遭受第一次攻 击后,自由软件运动教父Eric Raymond公开声称,“我们Linux社区不考虑采取任何类似‘拒绝服务攻击’或者其他违法入侵的行为来解决我们和其他操作系统之间的争端”,“我们 的骄傲也让我们不屑于肮脏的攻击”。

不过,当“肮脏的攻击”8月份再度出现的时候,Raymond间接承认,攻击者的确来自Linux社区。

其实,网络痞子们如此肆无忌惮,与开源组织领导人对SCO一再表示的鄙夷态度和对官司的乐观情绪之间,存在某种联系。在各大咨询公司建议企业对 Linux采购保持慎重的同时,在开源社区内部,几乎没有人认真考虑过用户可能面临的风险,也没有人冷静地检讨GPL及自由软件开发模式可能存在的知识产 权漏洞。开源组织的权贵们一边丑化着SCO,一边不断向外界传递着胜利在握的乐观情绪。

Linux之父林纳斯·托瓦兹在官司开始之初就颇有意味地暗示说:“当SCO不能在市场上得到什么的时候,只有提出控告,打那些巨富投资商的主意 了。”“老爸”们定了基调之后,整个开源社区立刻充满了对SCO的攻击和谩骂,这种攻击和谩骂的肮脏程度,与他们所宣称的清高和骄傲形成鲜明对照。有人甚 至别出心裁地想出了冒用McBride的名义发送垃圾邮件的办法,向SCO的身上泼粪,知识流氓总是比一般的流氓有创意。

让Linux社区能够底气十足地满不在乎的,是IBM。SCO曾经表示,来自Linux社区的攻击得到了IBM的幕后唆使。在Linux社区看来,IBM是一家大公司,它有足够多的现金,足够大的影响力,和足够丰富的诉讼经验,IBM不可能输掉官司。

对IBM来说,相中Linux,是相中了一种回报率较高的投资;对Linux来说,傍上IBM,是傍上了一个可以改变自身命运的达官贵人。这种民女 与富豪的联姻,让双方得到的好处,远比“从此过着幸福生活”来得丰富。这桩婚姻的一边,是钱、权势和地位,另一边,是草根、大众和民意。这样两股势力的合 流,让他们有足够的本钱藐视一切,也让他们有足够的底气不把任何人放在眼里。

当SCO公开表示皇帝可能什么都没穿的时候,实际上它就把自己暴露在交叉火力的开阔地带,因为Linux这位皇帝显然不如安徒生童话中的那位皇帝那么有涵养。

很明显,拒绝服务攻击比直接拿板砖砸人家店铺的玻璃更为数字化,在BBS上吐口水也比拍着大腿当街叫骂更加知识经济。不过,这些行为除了让人们对 Linux社区的层次有了更理性的认识之外,似乎并不能真正伤害到SCO,也无法真正展示他们的智慧。所以,Linux需要有更好的手段来打击SCO,比 如诉讼。

Linux相关企业和组织在世界各地差不多同时发起了针对SCO的诉讼,基本形成了一种群殴的局面。IBM以SCO自己也曾发行过Linux为由对 SCO提起反诉。Red Hat一方面声称SCO的官司对自己的业务毫无影响,一方面又以SCO妨碍了自己赚钱为由把SCO告上法庭。在欧洲,德国一个名为LinuxTag的 Linux组织,则以SCO败坏了Linux的名声的理由把SCO送上法庭,SCO被判赔偿10000欧元。

尽管SCO并没表现得焦头烂额应接不暇,但你不能不承认,一个严肃的法律问题,正变得越来越像一出舞台剧,在热闹的场景之下,没有人还会关心主角们在说什么。如果总有人在一旁起哄,一本正经地朗诵大段独白的哈姆雷特王子,是不是也会看起来像个小丑?

成了“公敌”的SCO就像一个被红卫兵押上台的“走资派”,往他脸上吐口唾沫,都能表现你的革命。倘若还能踹上两脚,就极有可能博得满堂喝彩。Novell公司就是这样一个演技极佳的角色。

论血缘,Novell和SCO算得上直系亲属,SCO的前身Caldera公司本身就是在Novell前CEO Ray Noorda的支持下成立的,并且Caldera的主要成员大多来自Novell。SCO现任CEO Darl McBride从1988年到1996年曾在Novell工作,并担任Novell副总裁。两家公司一直是极为密切的的生意伙伴,与Novell的完美整 合曾被视为Caldera OpenLinux的一个强项。SCO现在持有的对Unix的各种权利,很大一部分也是从Novell手中买下的。

亲不亲,立场分。在利益面前,即使像Novell和SCO这样的亲情,也一样可以被吐得满脸唾沫。今年5月28日,就是SCO发布季报的那一 天,Novell发表了一份声明,称SCO并不拥有UNIX System V的专利权和Unix的版权,这些权利属于Novell;并且,没有证据证明SCO所说的某些UNIX System V代码已复制到Linux中。在发给SCO的一封信中,Novell的CEO Jack Messman断言:SCO的真正用意“无非是要制造人们对Linux的恐怖、不信任和怀疑,并最终从Linux分销商和用户那里敲一笔”。

Novell大义灭亲的义举立刻得到Linux社区的喝彩,开放源代码的主要倡导者Bruce Perens说:“我们很钦佩他们的做法。”当然,他也没有忘记替Novell美言几句,“由于最近宣布通过NetWare服务来支持Linux,加上这 次辟谣……Novell已赢得了人心,深受开发人员和公司的信赖。”

尽管后来SCO又拿出证据证明Novell的确把Unix的所有权利都卖给了SCO,但大家已经不再关心事情的真相,重要的是,Novell曾经为妖魔化SCO出过力,因此Novell已经是“自己人”。

McBride曾向ComputerWorld的记者说,他所做的一切,仅仅是想要“尽力去关心那些我们的股东和雇员们,以及那些权利被蔑视的 人”,SCO的股价也确实从3月份的3美元左右,涨到了现在的18美元左右。但,在Linux排山倒海的喧嚣中,SCO的声音是微弱的,没人听得到,也没 人打算听到。既然Linux已经决定让SCO扮演一只过街老鼠,无论它自己愿不愿意,它都只能成为一只过街老鼠。

这是一个教训,也是Linux组织希望给我们的一个警告。

本文作者 洪波,写于2003年,原文首发于 ChinaByte

使用ADS1.2的注意事项及常用技巧

myos阅读(33)

红心如果创建的项目中有多个文件时(尤其是编译后的镜像大小超过4K时),一定要在link order栏下调整文件顺序,主要是前几个文件的顺序(2440init.s、2440slib.s、nand.c这三个文件一定要放在最前面),推荐的文件排列顺序从上到下依次为2440init.s、2440slib.s、nand.c、2440lib.c、Main.c…。详情请参考TQ2440开发板使用手册5.3.1ADS1.2新建项目试验小节(包括ADS项目的详细配置过程)。顺序不当,有可能导致编译出的程序烧写到Nand Flash中无法正常运行。

image

红心使用extern进行外部函数声明(或外部变量声明),使得不同文件可以调用同一工程中其他文件中定义的函数(变量)。也就是说本文件中没有定义这个函数(变量),但是这个函数(或变量)在同一工程中其他文件中有定义,要想在本文件中使用该函数(变量)就需要在本文件中使用extern声明此外部函数(或变量)。

为何要使用extern外部声明呢?因为如果同一工程中的多个文件都要使用到同一函数(或变量),但是我们不能在需要使用该函数(或变量)的所有文件都定义该函数(或变量),如果这样做的话,在程序链接时会出现“重复定义”的错误。正确的方法就是:在任一文件中定义外部函数(或变量),而在其他也需要该函数(或变量)的文件中使用extern对该函数(或变量)进行外部声明。

声明形式如下:

外部函数声明:

image

外部变量声明:

image

红心在函数名(或变量名)上右键:Go to function definition of XXX:(注意,需要在执行make后右键菜单才会出现此命令选项

image

红心查看头文件:(注意,也必须在执行make以后才可以)

image

红心在头文件中使用条件编译实现对开发板上同一设备不同型号之间进行选择,其基本结构如下所示:

image

CentOS 7 下的LAMP实现以及基于https的虚拟主机

myos阅读(3)

系统环境:
CentOS 7
Apache 2.4
php 5.4
MariaDB 5.5

项目需求:
创建3个虚拟主机,分别架设phpMyadmin,wordpress,Discuz
其中phpMyadmin提供https服务.

一、使用yum安装环境所需组件
  httpd,php,php-mysql,mariadb-server

  # yum install httpd php php-mysql mariadb-server

二、关闭SELINUX并配置防火墙

  1.为了测试方便,先关闭selinux
    临时关闭:
    setenforce 0

    永久关闭:
    vim /etc/sysconfig/selinux
    SELINUX=disabled

  2.在CentOS 7自带防火墙中添加80,443,3306端口

    查看firewall运行状态
    # firewall-cmd –state

    添加端口
    # firewall-cmd –add-port=80/tcp –permanent
    # firewall-cmd –add-port=443/tcp –permanent
    # firewall-cmd –add-port=3306/tcp –permanent

    重载firewall配置
    # firewall-cmd –reload

    查看已有规则
    # iptables -L -n

三、测试一下各软件是否正常

  1.启动httpd并测试访问:

    # systemctl start httpd

    没什么意外的话,此时浏览器访问测试页应该是成功的.

  2.测试数据库
    启动MariaDB
    # systemctl start mariadb

    能进入MariaDB命令行即可
    # mysql

    

  3.查看php版本,我的版本是5.4.16
    # php -v

     

四、配置Apache

  1.新建所需文件夹
    在/web/vhosts下创建三个虚拟主机分别需要的文件夹 ,pma,wp,dz
    # mkdir -p /web/vhosts/{pma,wp,dz}

  2.赋予Apache用户对整个/web目录的访问权:
    # chown -R apache:apache /web

  3.创建测试页面
    # vim /web/vhosts/pma/index.php
    内容为:
    < php
    echo “this is pma”
     >

    # vim /web/vhosts/wp/index.php
    内容为:
    < php
    echo “this is wp”
     >

    # vim /web/vhosts/dz/index.php
    内容为:
    < php
    echo “this is dz”
     >

 

  4.取消欢迎页,否则会有干扰
    # mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bak

  5.添加三个虚拟主机

    创建一个叫vhosts.conf配置文件
    # vim /etc/httpd/conf.d/vhosts.conf

    内容:

    <VirtualHost *:80>
    DocumentRoot /web/vhosts/pma
    ServerName pma.buybybuy.com
    ErrorLog logs/pma.err
    CustomLog logs/pma.access combined
    </VirtualHost>

    <Directory “/web/vhosts/pma”>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>

    <VirtualHost *:80>
    DocumentRoot /web/vhosts/wp
    ServerName wp.buybybuy.com
    ErrorLog logs/wp.err
    CustomLog logs/wp.access combined
    </VirtualHost>

    <Directory “/web/vhosts/wp”>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>

    <VirtualHost *:80>
    DocumentRoot /web/vhosts/dz
    ServerName dz.buybybuy.com
    ErrorLog logs/dz.err
    CustomLog logs/dz.access combined
    </VirtualHost>

    <Directory “/web/vhosts/dz”>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
    </Directory>

  6.重新载入httpd配置:
    # systemctl reload httpd

  7.测试一下三个虚拟主机:

     

    

    

  测试成功!

五、配置mariaDB

  1.刚安装完mariaDB后先初始化安全设置

    运行安全初始化脚本
    # /usr/bin/mysql_secure_installation

    以下给出我自己的选项作为参考

     

    1)是否设置root用户密码  (是)

    2)是否删除匿名用户  (是)
    3)禁止root用户远程登录吗  (否,但如果生产环境推荐禁止)
    4)要删除测试数据库吗  (否,如果将来有测试需求就保留)
    5)重载授权表吗  (是,刚刚的设置立即生效)

  2.附上root用户改密码命令
    # mysql
    SET PASSWORD FOR ‘root’@’localhost’=PASSWORD(‘123456’);
    SET PASSWORD FOR ‘root’@’127.0.0.1’=PASSWORD(‘123456’);

六.安装程序包
  1.安装phpmyadmin,Discuz,wordpress
    下载安装包到家目录
    可以用wget或者使用ftp工具,我这里因为用了Xshell连接服务器,所以直接使用了配套的Xftp将控制机中的安装包直接扔进家目录.

    

  2.确保已安装必要的压缩/解压缩工具

    我这里缺少bzip2,zip和unzip,所以
    # yum -y install bzip2 zip unzip

    分别解压缩
    # unzip Discuz_X3.2_SC_UTF8.zip -d Discuz_X3.2_SC_UTF8
    # tar -xf wordpress-4.5.3-zh_CN.tar.gz
    # tar -xf phpMyAdmin-4.4.15.8-all-languages.tar.bz2

  3.分别复制到定义好的虚拟主机目录下,注意只复制需要的文档

    # cp -a phpMyAdmin-4.4.15.8-all-languages/* /web/vhosts/pma/
    # cp -a wordpress/* /web/vhosts/wp/
    # cp -a Discuz_X3.2_SC_UTF8/upload/* /web/vhosts/dz/

七、调试网站
  1.配置phpmyadmin
    #cd /web/vhosts/pma

    找到默认配置文件并重命名为标准名称
    # cp config.sample.inc.php config.inc.php

    编辑配置文件
    大概17行找到
    $cfg[‘blowfish_secret’] = ”;

    这里需要加入一个随机字串,可以在bash下用以下命令生成:
    # tr -d ‘a-zA-Z0-9’ < /dev/urandom | head -30 | md5sum

    比如生成的字串为
    e2d8e1132dc737b3dc1f05cd44c0cc9e
    将生成的字串加入到上面的参数的引号中.如图:

    

    保存退出.

    访问pma.buybybuy.com的时候发现程序报错:

    

    意思是需要mbstring模块支持,mbstring是一个多语言包.

    所以要安装这个包
    # yum install php-mbstring

    重载httpd以便配置生效
    # systemctl reload httpd

    重新访问pma.buybybuy.com,页面成功打开

    

    此时可以使用之前配置的mysql的root用户登陆.

  2.创建所需数据库
    为了安装wordpress和Discuz,可以先使用phpMyadmin来为他们创建数据库.
    新增->填写数据库名称->选择排序编码->建立

    

 

    另外我们希望每个网站可以使用单独的数据库用户进行访问,所以这里为每个数据库创建自己的用户并绑定到对应的数据库.

    回到首页->用户->添加用户

     

 

    为了方便,我将数据库名与对应的用户名保持一致,可以按下图来创建

     

    

    因为已经提前创建数据库,所以红色下划线的命令会跳过创建数据库的步骤,后面蓝色下划线的命令会把用户绑定给这个数据库.

  3.配置wordpress

    进入wp目录
    # cd /web/vhosts/wp
    复制一个配置文件并重命名为配置文件的标准名称
    # cp wp-config-sample.php wp-config.php
    编辑配置文件
    # vim /web/vhosts/wp/wp-config.php

     

 

    修改对应的值.

    访问wp.buybybuy.com和dz.buybybuy.com,会显示安装界面.分别使用之前设定的参数安装即可.

八、给pma.buybybuy.com配置https

  1.确保OpenSSL已安装,因为要使用OpenSSL生成自签名证书
    # httpd -M | grep ssl
    如果没有则安装
    # yum install mod_ssl openssl

  2.配置CA服务器
    我的方法是先配置一台CA服务器 (CentOS A),之后再让当前这台服务器(CentOS B)向CentOS A申请认证.

  3.配置CA服务器(CentOS A)

    3.1 初始化CA服务,创建所需要的文件
      # cd /etc/pki/CA/
      # touch index.txt //创建索引文件
      # echo 01 > serial //创建序列号文件

    3.2 CA自签证书
      生成私钥
      # (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
      使用私钥生成签名证书
      # openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem

  4.申请证书(CentOS B):

    4.1 创建一个存放证书的目录
      # mkdir /etc/httpd/ssl
      # cd /etc/httpd/ssl

    4.2 生成秘钥
      # (umask 007;openssl genrsa -out httpd.key 1024)
    4.3 生成请求文件
      # openssl req -new -key httpd.key -out httpd.csr

    4.4 填表,按照自己情况写
      Country Name (2 letter code) [XX]:CN
      State or Province Name (full name) []:Beijing
      Locality Name (eg, city) [Default City]:Beijing
      Organization Name (eg, company) [Default Company Ltd]:Quintin Ltd
      Organizational Unit Name (eg, section) []:Ops
      Common Name (eg, your name or your server’s hostname) []:pma.buybybuy.com
      Email Address []:admin@buybybuy.com

    4.5 把生成的文件发送到CA服务器 CentOS A,这里我使用scp命令:
      # scp httpd.csr root@192.168.3.67:/tmp/

    4.6 按照提示操作成功之后,httpd.csr 应该已经在CentOS A的/tmp/目录中.

  5.签署证书(CentOS A):

    5.1 签署,有效期十年
      # openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/pma.buybybuy.com.crt -days 3650
    5.2 将生成的crt传回CentOS B
      # scp /etc/pki/CA/certs/pma.buybybuy.com.crt root@192.168.3.77:/etc/httpd/ssl/
    5.3 按照提示操作成功之后,pma.buybybuy.com.crt 应该已经在CentOS B的/etc/httpd/ssl/目录中.

  6.配置ssl(CentOS B):

    6.1 事先备份
      # cd /etc/httpd/conf.d/
      # cp ssl.conf{,.bak}

    6.2 编辑ssl.conf
      # vim ssl.conf

      以下为修改项
      <VirtualHost _default_:443>
      =>
      <VirtualHost *:443>

      基本设置
      DocumentRoot “/web/vhosts/pma”
      ServerName pma.buybybuy.com:443

      证书位置
      SSLCertificateFile /etc/pki/tls/certs/localhost.crt
      =>
      SSLCertificateFile /etc/httpd/ssl/pma.buybybuy.com.crt

      私钥位置
      SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
      =>
      SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

      保存退出.

    6.3 检查配置文件语法错误:
      # httpd -t

    6.4 重启httpd:
      # systemctl restart httpd

    6.5 查看443端口是否已开启:
      # ss -tnl

       

 

    6.6 去浏览器访问格式:
      https://pma.buybybuy.com

      看见https字样就对了.但会提示无效,添加信任即可.

       

 

大前端WP主题 更专业 更方便

联系我们联系我们