Category Archives: 良心榜

repo

什么是repo文件?
repo文件是Fedora中yum源(软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容,例如我们将从哪里下载需要安装或者升级的软件包,repo文件中的设置内容将被yum读取和应用!
YUM的工作原理并不复杂,每一个 RPM软件的头(header)里面都会纪录该软件的依赖关系,那么如果可以将该头的内容纪录下来并且进行分析,可以知道每个软件在安装之前需要额外安装哪些基础软件。也就是说,在服务器上面先以分析工具将所有的RPM档案进行分析,然后将该分析纪录下来,只要在进行安装或升级时先查询该纪录的文件,就可以知道所有相关联的软件。所以YUM的基本工作流程如下:
服务器端:在服务器上面存放了所有的RPM软件包,然后以相关的功能去分析每个RPM文件的依赖性关系,将这些数据记录成文件存放在服务器的某特定目录内。
客户端:如果需要安装某个软件时,先下载服务器上面记录的依赖性关系文件(可通过WWW或FTP方式),通过对服务器端下载的纪录数据进行分析,然后取得所有相关的软件,一次全部下载下来进行安装。

  1. vi /etc/yum.conf
  2. [main]
  3. cachedir=/var/cache/yum
  4. #cachedir:yum缓存的目录,yum在此存储下载的rpm包和数据库,一般是/var/cache/yum。
  5. debuglevel=2
  6. #debuglevel:除错级别,0──10,默认是2 貌似只记录安装和删除记录
  7. logfile=/var/log/yum.log
  8. pkgpolicy=newest
  9. #pkgpolicy: 包的策略。一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。
  10. distroverpkg=centos-release
  11. #指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。
  12. tolerant=1
  13. #tolerent,也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1,则yum不会出现错误信息。默认是0。
  14. exactarch=1
  15. #exactarch,有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用1686的包来升级。
  16. retries=20
  17. #retries,网络连接发生错误后的重试次数,如果设为0,则会无限重试。
  18. obsoletes=1
  19. gpgcheck=1
  20. #gpgchkeck= 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认是检查的。
  21. reposdir=/etc/yy.rm #默认是 /etc/yum.repos.d/ 低下的 xx.repo后缀文件
  22. #默认都会被include 进来 也就是说 /etc/yum.repos.d/xx.repo 无论配置文件有多少个 每个里面有多少个[name] 最后其实都被整合到 一个里面看就是了 重复的[name]后面的覆盖前面的
  23. exclude=xxx
  24. #exclude 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。
  25. keepcache=[1 or 0]
  26. #  设置 keepcache=1,yum 在成功安装软件包之后保留缓存的头文件 (headers) 和软件包。默认值为 keepcache=0 不保存
  27. reposdir=[包含 .repo 文件的目录的绝对路径]
  28. #  该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。

第二部分:
vi /etc/yum.repo.d/xx.repo
这个字段其实也可以在yum.conf里面直接配置

  1. [serverid]
  2. #其中serverid是用于区别各个不同的repository,必须有一个独一无二的名称。 重复了 前面覆盖后面--还是反过来呢???用enabled 测试是后面覆盖前面
  3. name=Some name for this server
  4. #name,是对repository的描述,支持像$releasever $basearch这样的变量; name=Fedora Core $releasever - $basearch - Released Updates
  5. baseurl=url://path/to/repository/
  6. #baseurl是服务器设置中最重要的部分,只有设置正确,才能从上面获取软件。它的格式是:
  7. baseurl=url://server1/path/to/repository/
  8. url://server2/path/to/repository/
  9. url://server3/path/to/repository/
  10. #其中url支持的协议有 http:// ftp:// file://三种。baseurl后可以跟多个url,你可以自己改为速度比较快的镜像站,但baseurl只能有一个,也就是说不能像如下格式:
  11. baseurl=url://server1/path/to/repository/
  12. baseurl=url://server2/path/to/repository/
  13. baseurl=url://server3/path/to/repository/
  14. 其中url指向的目录必须是这个repository header目录的上一级,它也支持$releasever $basearch这样的变量。
  15. #mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch
  16. #上面的这一行是指定一个镜像服务器的地址列表,通常是开启的,本例中加了注释符号禁用了,我们可以试试,将$releasever和$basearch替换成自己对应的版本和架构,例如10和i386,在浏览器中打开,我们就能看到一长串镜可用的镜像服务器地址列表。
  17. url之后可以加上多个选项,如gpgcheck、exclude、failovermethod等,比如:
  18. gpgcheck=1
  19. exclude=gaim
  20. #其中gpgcheck,exclude的含义和[main]部分相同,但只对此服务器起作用,
  21. failovermethod=priority
  22. #failovermethode 有两个选项roundrobin和priority,意思分别是有多个url可供选择时,yum选择的次序,roundrobin是随机选择,如果连接失 败则使用下一个,依次循环,priority则根据url的次序从第一个开始。如果不指明,默认是roundrobin。
  23. enabled=[1 or 0]
  24. #当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。
  25. #通过 yum 的 --enablerepo=[repo_name] 和 --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库

几个变量
$releasever,发行版的版本,从[main]部分的distroverpkg获取,如果没有,则根据redhat-release包进行判断。
$arch,cpu体系,如i686,athlon等
$basearch,cpu的基本体系组,如i686和athlon同属i386,alpha和alphaev6同属alpha。
对yum.conf设定完成,我们就可以好好体验yum带来的方便了。

还有一件事没有做。那就是导入每个reposity的GPG key,前面说过,yum可以使用gpg对包进行校验,确保下载包的完整性,所以我们先要到各个repository站点找到gpg key,一般都会放在首页的醒目位置,一些名字诸如 RPM-GPG-KEY.txt之类的纯文本文件,把它们下载,然后用rpm --import xxx.txt命令将它们导入,最好把发行版自带GPG-KEY也导入,rpm --import /usr/share/doc/redhat-release-*/RPM-GPG-KEY 官方软件升级用的上。

参考:http://hi.baidu.com/iris_chow/blog/item/0b414613de76b1c2c3fd788d.html
http://kpjack.blog.51cto.com/627289/128325

cat

1、cat 显示文件连接文件内容的工具;

cat 是一个文本文件查看和连接工具。查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名。

比如:

de>[root@localhost ~]# cat /etc/fstabde>

为了便于新手弟兄灵活掌握这个工具,我们多说一点常用的参数;


1.0 cat 语法结构;

de>cat [选项] [文件]...de>
选项
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号
-s, --squeeze-blank 不输出多行空行
-t 与 -vT 等价
-T, --show-tabs 将跳 字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
--help 显示此帮助信息并离开


1.1 cat 查看文件内容实例;

de>[root@localhost ~]# cat /etc/profile    注:查看/etc/目录下的profile文件内容;
[root@localhost ~]# cat -b /etc/fstab   注:查看/etc/目录下的profile内容,并且对非空白行进行编号,行号从1开始;
[root@localhost ~]# cat -n /etc/profile    注:对/etc目录中的profile的所有的行(包括空白行)进行编号输出显示;
[root@localhost ~]# cat  -E /etc/profile     注:查看/etc/下的profile内容,并且在每行的结尾处附加$符号;de>

cat 加参数-n 和nl工具差不多,文件内容输出的同时,都会在每行前面加上行号;

de>[root@localhost ~]# cat -n /etc/profile
[root@localhost ~]# nl  /etc/profilede>

cat 可以同时显示多个文件的内容,比如我们可以在一个cat命令上同时显示两个文件的内容;

de>[root@localhost ~]# cat /etc/fstab /etc/profilede>

cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;

de>[root@localhost ~]# cat /etc/fstab /etc/profile | morede>


1.2 cat 的创建、连接文件功能实例;


cat 有创建文件的功能,创建文件后,要以EOF或STOP结束;

de>[root@localhost ~]# cat >  linuxsir.org.txt  << EOF  注:创建linuxsir.org.txt文件;
> 我来测试 cat 创建文件,并且为文件输入内容;       注:这是为linuxsir.org.txt文件输入内容;
> 北南南北 测试;                   注:这是为linuxsir.org.txt文件输入内容;
> EOF   注:退出编辑状态;

[root@localhost ~]# cat linuxsir.org.txt  注:我们查看一下linuxsir.org.txt文件的内容;

我来测试 cat 创建文件,并且为文件输入内容;
北南南北 测试;de>

cat 还有向已存在的文件追加内容的功能;

de>[root@localhost ~]# cat  linuxsir.txt 注:查看已存在的文件linuxsir.txt 内容;
I am BeiNanNanBei From LinuxSir.Org .    注:内容行
我正在为cat命令写文档

[root@localhost ~]# cat >> linuxsir.txt << EOF   注:我们向linuxsir.txt文件追加内容;
> 我来测试cat向文档追加内容的功能;       注:这是追回的内容
> OK?
> OK~
> 北南 呈上
> EOF   注:以EOF退出;

[root@localhost ~]# cat linuxsir.txt  注:查看文件内容,看是否追回成功。
I am BeiNanNanBei From LinuxSir.Org .
我正在为cat命令写文档

我来测试cat向文档追加内容的功能;  
OK?
OK~
北南 呈上de>

cat 连接多个文件的内容并且输出到一个新文件中;

假设我们有sir01.txt、sir02.tx和sir03.txt ,并且内容如下;

de>[root@localhost ~]# cat sir01.txt  
123456
i am testing

[root@localhost ~]# cat sir02.txt
56789
BeiNan Tested

[root@localhost ~]# cat sir03.txt
09876
linuxsir.org testingde>

我想通过cat 把sir01.txt、sir02.txt及sir03.txt 三个文件连接在一起(也就是说把这三个文件的内容都接在一起)并输出到一个新的文件sir04.txt 中。

注意:其原理是把三个文件的内容连接起来,然后创建sir04.txt文件,并且把几个文件的内容同时写入sir04.txt中。特别值得一提的是,如果您输入到一个已经存在的sir04.txt 文件,会把sir04.txt内容清空。

de>[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt > sir04.txt

[root@localhost ~]# more sir04.txt
123456
i am testing
56789
BeiNan Tested
09876
linuxsir.org testingde>

cat 把一个或多个已存在的文件内容,追加到一个已存在的文件中

de>[root@localhost ~]# cat sir00.txt
linuxsir.org forever

[root@localhost ~]# cat sir01.txt sir02.txt sir03.txt >> sir00.txt

[root@localhost ~]# cat sir00.txt
linuxsir.org forever
123456
i am testing
56789
BeiNan Tested
09876
linuxsir.org testingde>

警告:我们要知道>意思是创建,>>是追加。千万不要弄混了。造成失误可不是闹着玩的;

centos 7 安装 gradle

第一步 1.下载安装gradle

 cd /opt
  wget https://services.gradle.org/distributions/gradle-3.2-bin.zip
 unzip gradle-3.2-bin.zip
  ln -s gradle-3.2 gradle

Step 2. 设置环境变量

vim /etc/profile.d/gradle-env.sh

export GRADLE_HOME=/opt/gradle
export PATH=$PATH:$GRADLE_HOME/bin

source /etc/profile.d/gradle-env.sh

htpasswd

htpasswd [-cmdpsD] wenjianming username

htpasswd -b[cmdpsD] wenjianming username password

htpasswd -n[mdps] username

htpasswd -nb[mdps] username password

htpasswd命令选项参数说明:

-c创建一个加密文件。

-n不更新加密文件,只将htpasswd命令加密后的用户名和密码显示在屏幕上。

-m默认htpassswd命令采用MD5算法对密码进行加密,该参数默认情况下可以不加。

-d表示htpassswd命令采用CRYPT算法对密码进行加密。

-s表示htpassswd命令采用SHA算法对密码进行加密。

-p表示htpassswd命令不对密码进行进行加密,即明文密码。

-b表示在htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码。

-D表示删除指定的用户

sourcetree 提示 无法定位 libcurl dll的解决办法

C:\Users\你的用户名\AppData\Local\Atlassian\SourceTree\git_local\mingw32\bin

把上面文件夹里的东西复制到下面文件夹里就可以了

C:\Users\你的用户名\AppData\Local\Atlassian\SourceTree\git_local\mingw32\libexec\git-core

2016-10-28 dobogi latest

dobogi-1

centos7 部署shadowsocks manyuser

1.1 获取最新版shadowsocks-rm manyuser

adduser shadowsocks
cd /home
git clone https://github.com/Acris/shadowsocks-rm.git
chown shadowsocks:shadowsocks shadowsocks-rm -R
cd shadowsocks-rm/shadowsocks

CentOS:

yum install m2crypto python-setuptools
easy_install pip

安装 cymysql支持

pip install cymysql

1.3 编辑配置文件 配置文件可参考README

# 配置 数据库地址,数据库名,端口等..   
$ vim ./config.py
# 测试是否可以正常运行
$ python servers.py

 

2.1 systemd脚本 (这是什么?

提供一个 systemd 服务脚本,写进 /etc/systemd/system/shadowsocks-rm.service 即可,需要修改其中的运行用户组以及运行路径

cat >/etc/systemd/system/shadowsocks-rm.service<<-EOF

[Unit]
Description=Shadowsocks Proxy Services(shadowsocks-rm manyuser)
After=syslog.target
After=network.target

[Service]
Type=simple
User=shadowsocks
Group=shadowsocks
WorkingDirectory=/home/shadowsocks-rm/shadowsocks
ExecStart=/usr/bin/python /home/shadowsocks-rm/shadowsocks/servers.py
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
Environment="USER=shadowsocks","HOME=/home/shadowsocks-rm/shadowsocks"

[Install]
WantedBy=multi-user.target
EOF

需要修改的地方有: WorkingDirectory=/home/shadowsocks-rm/shadowsocks , ExecStart=后面参数 ,Environment=后面参数

2.2 supervisor进程守护

2.2.1 安装supervisor (这是什么?

yum install supervisor

2.2.2 添加配置文件

cat >/etc/supervisord.d/shadowsocks-rm.conf<<-EOF
[program:shadowsocks-rm]
command = /usr/bin/python /home/shadowsocks-rm/shadowsocks/servers.py
directory = /home/shadowsocks-rm/shadowsocks
user = shadowsocks
autostart = true
autorestart = true
EOF

注意修改command、directory和user后面的参数

 

 

 

 

docker 删除 images 和 containers

docker rmi $(docker images | awk '/^<none>/ { print $3 }')

docker rm $(docker ps -a -q)

记录一次 密钥未在远程主机上注册

密钥未在远程主机上注册 记录一次

正准备去/var/log/secure看日志的时候

一把这个日志清空

就可以登陆了

好诡异啊

Linux LVM 逻辑卷 创建,增加,减少,删除,卸载

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://dreamfire.blog.51cto.com/418026/1084729

Linux LVM逻辑卷配置过程详解

另一个博客地址:www.rsyslog.org  Linux社区

许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。

LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。

LVM的配置过程也很简单,并不是很难,为此,我画了一张图文并茂的解析图,解析了LVM创建的整个过程。更详细的理论知识还请参看一些教程或者去Google哦!

 

clip_image002

实验环境:

clip_image001

clip_image003

首先从空的硬盘sdb上创建两个分区sdb1 1G,sdb2 2G. 为接下来做LVM做准备.

clip_image004

clip_image006

clip_image008

为了后期便于维护管理,记得给分区加上标示,这样即使你不在的情况下,别人看到标示了就不会轻易动这块区域了. LVM的标识是8e,设置完成后记得按w保存

clip_image010

clip_image012

一、创建逻辑卷

将新创建的两个分区/dev/sdb1 /dev/sdb2转化成物理卷,主要是添加LVM属性信息并划分PE存储单元.

clip_image014

创建卷组 vgdata ,并将刚才创建好的两个物理卷加入该卷组.可以看出默认PE大小为4MB,PE是卷组的最小存储单元.可以通过 –s参数修改大小。

clip_image016

从物理卷vgdata上面分割500M给新的逻辑卷lvdata1.

clip_image018

使用mkfs.ext4命令在逻辑卷lvdata1上创建ext4文件系统.

clip_image020

将创建好的文件系统/data1挂载到/data1上.(创建好之后,会在/dev/mapper/生成一个软连接名字为”卷组-逻辑卷”)

clip_image022

clip_image024

便于以后服务器重启自动挂载,需要将创建好的文件系统挂载信息添加到/etc/fstab里面.UUID可以通过 blkid命令查询.

clip_image026

为了查看/etc/fstab是否设置正确,可以先卸载逻辑卷data1,然后使用mount –a 使内核重新读取/etc/fstab,看是否能够自动挂载.

clip_image028

二、逻辑卷lvdata1不够用了,如何扩展。

给逻辑卷增加空间并不会影响以前空间的使用,所以无需卸载文件系统,直接通过命令lvextend –L +500M /dev/vgdata/lvdata1或者lvextend –l 2.5G /dev/vgdata/lvdata1 给lvdata1增加500M空间(lvdata1目前是2G空间)设置完成之后,记得使用resize2fs命令来同步文件系统。

clip_image030

clip_image032

三、当卷组不够用的情况下,如何扩大卷组

重新从第二块硬盘上创建一个分区sdb3,具体操作步骤省略。并将创建好的分区加入到已经存在的卷组vgdata中。通过pvs命令查看是否成功。

clip_image034

clip_image036

四、当硬盘空间不够用的情况下,如果减少逻辑卷的空间释放给其他逻辑卷使用。

减少逻辑卷空间,步骤如下

1、 先卸载逻辑卷data1

2、 然后通过e2fsck命令检测逻辑卷上空余的空间。

3、 使用resize2fs将文件系统减少到700M。

4、 再使用lvreduce命令将逻辑卷减少到700M。

注意:文件系统大小和逻辑卷大小一定要保持一致才行。如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。如果逻辑卷小于文件系统,哪数据就出问题了。

clip_image038

完成之后,就可以通过mount命令挂载重新使用了。

clip_image040

五、如果某一块磁盘或者分区故障了如何将数据快速转移到相同的卷组其他的空间去。

1、通过pvmove命令转移空间数据

2、通过vgreduce命令将即将坏的磁盘或者分区从卷组vgdata里面移除除去。

3、通过pvremove命令将即将坏的磁盘或者分区从系统中删除掉。

4、手工拆除硬盘或者通过一些工具修复分区。

clip_image042

clip_image044

六、删除整个逻辑卷

1、先通过umount命令卸载掉逻辑卷lvdata1

2、修改/etc/fstab里面逻辑卷的挂载信息,否则系统有可能启动不起来。

3、通过lvremove 删除逻辑卷lvdata1

4、通过vgremove 删除卷组vgdata

5、通过pvremove 将物理卷转化成普通分区。

clip_image046

删除完了,别忘了修改分区的id标识。修改成普通Linux分区即可。

clip_image048

总结:LVM逻辑卷是Linux里面一个很棒的空间使用机制,因为分区在没有格式化的情况下是没有办法加大或者放小的。通过LVM可以将你的磁盘空间做到灵活自如。

本文出自 “www.kisspuppet.com” 博客,请务必保留此出处http://dreamfire.blog.51cto.com/418026/1084729