apt-key

管理Debian Linux系统中的软件包密钥

补充说明

apt-key命令 用于管理Debian Linux系统中的软件包密钥。每个发布的deb包,都是通过密钥认证的,apt-key用来管理密钥。

语法

1
apt-key(参数)

参数

操作指令:APT密钥操作指令。

实例

1
2
3
4
apt-key list          #列出已保存在系统中key。
apt-key add keyname #把下载的key添加到本地trusted数据库中。
apt-key del keyname #从本地trusted数据库删除key。
apt-key update #更新本地trusted数据库,删除过期没用的key。

apt-get

Debian Linux发行版中的APT软件包管理工具

补充说明

apt-get命令 是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。

语法

1
apt-get(选项)(参数)

选项

1
-c:指定配置文件。

参数

  • 管理指令:对APT软件包的管理操作;
  • 软件包:指定要操纵的软件包。

实例

使用apt-get命令的第一步就是引入必需的软件库,Debian的软件库也就是所有Debian软件包的集合,它们存在互联网上的一些公共站点上。把它们的地址加入,apt-get就能搜索到我们想要的软件。/etc/apt/sources.list是存放这些地址列表的配置文件,其格式如下:

1
deb web或[ftp地址] [发行版名字] main/contrib/non-[free]

我们常用的Ubuntu就是一个基于Debian的发行,我们使用apt-get命令获取这个列表,以下是我整理的常用命令:

在修改/etc/apt/sources.list或者/etc/apt/preferences之后运行该命令。此外您需要定期运行这一命令以确保您的软件包列表是最新的:

1
apt-get update

安装一个新软件包:

1
apt-get install packagename

卸载一个已安装的软件包(保留配置文件):

1
apt-get remove packagename

卸载一个已安装的软件包(删除配置文件):

1
apt-get –purge remove packagename

会把已装或已卸的软件都备份在硬盘上,所以如果需要空间的话,可以让这个命令来删除你已经删掉的软件:

1
apt-get autoclean apt

这个命令会把安装的软件的备份也删除,不过这样不会影响软件的使用的:

1
apt-get clean

更新所有已安装的软件包:

1
apt-get upgrade

将系统升级到新版本:

1
apt-get dist-upgrade

定期运行这个命令来清除那些已经卸载的软件包的.deb文件。通过这种方式,您可以释放大量的磁盘空间。如果您的需求十分迫切,可以使用apt-get clean以释放更多空间。这个命令会将已安装软件包裹的.deb文件一并删除。大多数情况下您不会再用到这些.debs文件,因此如果您为磁盘空间不足 而感到焦头烂额,这个办法也许值得一试:

1
apt-get autoclean

apropos

在 whatis 数据库中查找字符串

补充说明

apropos命令 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字,然后把结果送到标准输出。

如果你不知道完成某个特定任务所需要命令的名称,可以使用一个关键字通过Linux apropos实用程序来搜索它。该实用程序可以搜索关键字并且显示所有包含匹配项的man页面的简短描述。另外,使用man实用程序和-k(关键字)选项,可以得到和用Linux apropos实用程序相同的结果(实际上是相同的命令)。

语法

1
apropos [-dalhvV] -e|-[w|-r] [-s section] [-m system[,...]] [-M path] [-L locale] -C [file] keyword ...

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
-d, --debug:输出调试信息。
-v, --verbose:输出详细的警告信息。
-r, -- regex:将每个keyword作为正则表达式解释。这是默认行为。每个keyword将匹配手册页和描述。
-w, --wildcard:将每个keyword作为shell样式的通配符解释。
-e, --exact:每个keyword将精确匹配手册页名字和描述。
-a, --and:只显示匹配所有keyword的手册页和描述。默认显示匹配任何keyword的项。
-l, --long:不根据终端宽度缩减输出。
-s section, --section section:只查找指定的手册section。
-m system[,...], --systems=system[,...]:用于查找其它操作系统的手册页。
-M path, --manpath=path:指定从其它以冒号分隔的手册页层次查找。默认使用$MANPATH环境变量。这个选项覆盖$MANPATH的内容。
-L locale, --locale=locale:apropos调用C函数setlocale来得到当前本地化信息,包括$LC_MESSAGE和$LANG。使用该选项提供一个locale字符串来临时更改本地化信息。
-C file, --config-file=file:使用这个用户配置文件而不是默认的~/.manpath。
-h, --help:打印帮助信息并退出。
-V, --version:打印版本信息并退出。

返回值

返回0表示成功,1表示用法、语法或配置文件错误,2表示操作错误,16表示没有找到匹配的内容。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@localhost ~]# man -k who
at.allow [at] (5) - determine who can submit jobs via at or batch
at.deny [at] (5) - determine who can submit jobs via at or batch
jwhois (1) - client for the whois service
jwhois (rpm) - Internet whois/nicname client.
Net::LDAP::Extension::whoami (3pm) - LDAP Who am I? Operation
w (1) - Show who is logged on and what they are doing
who (1p) - display who is on the system
who (1) - show who is logged on
whoami (1) - print effective userid

[root@localhost ~]# apropos who
at.allow [at] (5) - determine who can submit jobs via at or batch
at.deny [at] (5) - determine who can submit jobs via at or batch
jwhois (1) - client for the whois service
jwhois (rpm) - Internet whois/nicname client.
Net::LDAP::Extension::WhoAmI (3pm) - LDAP Who am I? Operation
w (1) - Show who is logged on and what they are doing
who (1p) - display who is on the system
who (1) - show who is logged on
whoami (1) - print effective userid

查找手册页名字和描述中包含emacs和vi的手册页:

1
apropos -a emacs vi

apk

Alpine Linux 下的包管理工具

使用实例

1
2
3
4
5
6
apk install xxx
apk search xxx # 支持正则
apk info xxx # 查看包的详细信息
apk show # list local package
# 卸载并删除 包
apk del openssh openntp vim

升级

upgrade命令升级系统已安装的所以软件包(一般包括内核),当然也可指定仅升级部分软件包(通过-u或–upgrade选择指定)。

1
2
3
apk update # 更新最新本地镜像源
apk upgrade # 升级软件
apk add --upgrade busybox # 指定升级部分软件包

搜索

1
2
3
4
apk search # 查找所以可用软件包
apk search -v # 查找所以可用软件包及其描述内容
apk search -v 'acf*' # 通过软件包名称查找软件包
apk search -v -d 'docker' # 通过描述文件查找特定的软件包

查看包信息

info命令用于显示软件包的信息。

1
2
3
apk info # 列出所有已安装的软件包
apk info -a zlib # 显示完整的软件包信息
apk info --who-owns /sbin/lbu # 显示指定文件属于的包

笔记

还是蛮喜欢 alpine 的,简单纯粹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
apk add iproute2 # ss vs netstat
ss -ptl
apk add drill # drill vs nslookup&dig

crond # 开启 cron 服务
crontab -l -e

apk add xxx
apk search -v xxx
apk info -a xxx
apk info
echo -e "http://mirrors.aliyun.com/alpine/v3.6/main\nhttp://mirrors.aliyun.com/alpine/v3.6/community" > /etc/apk/repositories
apk update

# storage
ibu # alpine local backup

# network
echo "shortname" > /etc/hostname
hostname -F /etc/hostname
/etc/hosts
/etc/resolv.conf # conig DNS
modprobe ipv6 # enable ipv6
echo "ipv6" >> /etc/modules
iface # config interface
apk add iptables ip6tables iptables-doc
/etc/init.d/networking restart # activate change
apke add iputils # IPv6 traceroute
traceroute6 ipv6.google.com
awall # alpine wall
# setup a openvpn server

# post-install
/etc/apk/repositories
apk add cherokee --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
apk search -v --description 'NTP' # show description and search from description
apk info -a zlib
apk info -vv|sort
apk info -r -R # require / depency
apk version -v -l '<' # show available updates
apk upgrade -U -a
apk add -u xxx # update xxx

/etc/runlevels # runlevel
apk add openrc # use openrc for init system
rc-update add xxx # set to start on
rc-service xxx start # equal -> /etc/init.d/xxx start
rc-status

adduser xxx
passwd xxx

apk add ansible # server
ssh-keygen
/etc/ansible/hosts
apk add python # node
ssh-copy-id

apk add man man-pages mdocml-apropos less less-doc
export PAGER=less
/etc/rc.conf # /etc/rc.conf -> funny character
apk add bash bash-doc bash-completion # bash
apk add util-linux pciutils usbutils coreutils binutils findutils grep # grep / awk
apk add build-base gcc abuild binutils binutils-doc gcc-doc # compile
apk add cmake cmake-doc extra-cmake-modules extra-cmake-modules-doc
apk add ccache ccache-doc

apk add docker # docker
rc-update add docker boot
rc-service docker start
apk add py-pip
pip install docker-compose
ln -s /usr/bin/docker-compose /usr/bin/doc

# application
apk add openssh # ssh
rc-update add sshd
/etc/init.d/sshd start
/etc/sshd_config
apk add dropbear # another openssh implementation

apachectl

Apache服务器前端控制工具

补充说明

apachectl命令 是Apache的Web服务器前端控制工具,用以启动、关闭和重新启动Web服务器进程。

语法

1
apachectl(参数)

参数

  • configtest:检查设置文件中的语法是否正确;
  • fullstatus:显示服务器完整的状态信息;
  • graceful:重新启动Apache服务器,但不会中断原有的连接;
  • help:显示帮助信息;
  • restart:重新启动Apache服务器;
  • start:启动Apache服务器;
  • status:显示服务器摘要的状态信息;
  • stop:停止Apache服务器。

alias

用来设置指令的别名

补充说明

alias命令 用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号''将原来的命令引起来,防止特殊字符导致错误。

alias命令的作用只局限于该次登入的操作。若要每次登入都能够使用这些命令别名,则可将相应的alias命令存放到bash的初始化文件/etc/bashrc中。

语法

1
alias(选项)(参数)

选项

1
-p:打印已经设置的命令别名。

参数

命令别名设置:定义命令别名,格式为“命令别名=‘实际命令’”。

实例

alias 的基本使用方法为:

1
alias 新的命令='原命令 -选项/参数'

例如:alias l=‘ls -lsh'将重新定义ls命令,现在只需输入l就可以列目录了。直接输入 alias 命令会列出当前系统中所有已经定义的命令别名。

要删除一个别名,可以使用 unalias 命令,如 unalias l。

查看系统已经设置的别名:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# 
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
[root@localhost ~]#

命令别名永久生效

直接在shell里设定的命令别名,在终端关闭或者系统重新启动后都会失效,如何才能永久有效呢?办法就是将别名的设置加入~/.bashrc文件,然后重新载入下文件就可以了。

1
$ vim ~/.bashrc

在文件最后面加入别名设置,如:alias rm=’rm -i’,保存后重新载入:

1
$ source ~/.bashrc

这样就可以永久保存命令的别名了。因为修改的是当前用户目录下的.bashrc文件,所以这样的方式只对当前用户有用。如果要对所有用户都有效,修改/etc目录下的bashrc文件就可以了。在CentOS7下,这个文件是/etc/bash.bashrc。此外在CentOS7下,细看~/.bashrc文件,会发有这样一段代码:

1
2
3
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi

这个代码的意思就是加载.bash_aliases文件,CentOS7已经帮我们考虑好了,所以也可以在用户根目录下新建一个文件.bash_aliases存放命令别名设置。

小结

alias这个命令是shell的内建命令,可以根据自己的使用习惯设置一些别名,需要注意的就是和其他命令冲突的情况。

一、 范例演示

在使用和维护Linux系统过程中,我们常常希望根据自己的需要来定义一些命令,那么这样的操作是不是很难呢?其实不是,系统已经为我们设置好了相关的命令,下面小编就以CentOS6.4系统为例,为大家演示如何创建自己的命令。

二、 自定义命令简介

CentOS系统下的创建自定义命令其实比较简单,使用的命令就是alias,具体使用的方法就是 alias 自定义命令名=‘命令’。但是需要注意的是,在自定义之前需要查看自定义的命令名是否是系统已经使用的命令名,否则会冲突,另外一个就是定期清理不需要的自定义命令名。

三、 演示举例

假定系统操作员希望进行如下操作:
1.进入目录/root
2.查看目录下文件
3.切换回根目录
通常这需要三条命令 cd /root;ls;cd / ,如果需要经常使用那么我们可以通过自定义命令的方式用一条命令完成全部操作。

四、 操作过程

首先使用命令 type 自定义命令名 ,查看自定义命令名是否被系统占用。从图中可以看出test命令名已被系统占用,所以不能使用,而loo这个命令名经查询可以使用。

使用命令alias创建自定义命令:alias loo='cd /root;ls;cd /' 。需要注意的是命令的使用格式,分号与分号之间是没有空格的。

测试一下自定义命令,当输入命令 loo 时,发现系统依次完成了 cd /root、ls、cd / 三条命令,说明设置成功。同时也可直接使用命令 alias  查询系统中是否添加了loo这个自定义命令。

如果希望删除这个自定义命令,可以使用命令 unalias 自定义命令名 来完成。执行之后发现,loo命令已不存在,同时自定义命令库中也没有loo命令。

ack

比grep好用的文本搜索工具

安装

1
2
3
4
# ubuntu下要安装ack-grep,因为在debian系中,ack这个名字被其他的软件占用了。
sudo apt-get install ack-grep
# alpine Linux-apk软件包管理器 安装 ack
apk install ack

参数

这些参数在linux上的适用频率是相当高的,尤其是你用vim做为IDE的话

1
2
-c(统记)/ -i(忽略大小)/ -h(不显示名称)/
-l(只显文件名)/ -n(加行号)/ -v(显示不匹配)

特点

ack官网列出了这工具的5大卖点:

  1. 速度非常快,因为它只搜索有意义的东西。
  2. 更友好的搜索,忽略那些不是你源码的东西。
  3. 为源代码搜索而设计,用更少的击键完成任务。
  4. 非常轻便,移植性好。
  5. 免费且开源

实例

在记忆的时候大体上可以分为这几个部分:

Searching 代码搜索
Search output 搜索结果处理
File presentation 文件展示
File finding 文件查找
File inclusion/exclusion 文件过滤

grep常用操作

1
2
3
grep -r 'hello_world' # 简单用法
grep '^hello_world' . # 简单正则
ls -l | grep .py # 管道用法

Searching

简单的文本搜索,默认是递归的。

1
2
3
4
5
ack-grep hello
ack-grep -i hello
ack-grep -v hello
ack-grep -w hello
ack-grep -Q 'hello*'

Search File

对搜索结果进行处理,比如只显示一个文件的一个匹配项,或者xxx

1
2
3
ack-grep --line=1       # 输出所有文件第二行
ack-grep -l 'hello' # 包含的文件名
ack-grep -L 'print' # 非包含文件名

File presentation

输出的结果是以什么方式展示呢,这个部分有几个参数可以练习下

1
2
3
ack-grep hello --pager='less -R'    # 以less形式展示
ack-grep hello --noheading # 不在头上显示文件
ack-grep hello --nocolor # 不对匹配字符着色

File finding

没错,它可以查找文件,以省去你要不断的结合find和grep的麻烦,虽然在linux的思想是一个工具做好一件事。

1
2
3
ack-grep -f hello.py     # 查找全匹配文件
ack-grep -g hello.py$ # 查找正则匹配文件
ack-grep -g hello --sort-files # 查找然后排序

File Inclusion/Exclusion

文件过滤,个人觉得这是一个很不错的功能。如果你曾经在搜索项目源码是不小心命中日志中的某个关键字的话,你会觉得这个有用。

1
2
ack-grep --python hello       # 查找所有python文件
ack-grep -G hello.py$ hello # 查找匹配正则的文件

参考资料

accept

指示打印系统接受发往指定目标打印机的打印任务

补充说明

accept命令 属于CUPS套件,用于指示打印系统接受发往指定目标打印机的打印任务。

语法

1
accept(选项)(参数)

选项

1
2
3
-E:当连接到服务器时强制加密;
-U:指定连接服务器时使用的用户名;
-h:指定连接服务器名和端口号。

参数

目标:指定目标打印机。

ab

Apache服务器的性能测试工具

补充说明

ab命令 是Apache的Web服务器的性能测试工具,它可以测试安装Web服务器每秒种处理的HTTP请求。

语法

1
ab(选项)(参数)

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
-A:指定连接服务器的基本的认证凭据;
-c:指定一次向服务器发出请求数;
-C:添加cookie;
-g:将测试结果输出为“gnuolot”文件;
-h:显示帮助信息;
-H:为请求追加一个额外的头;
-i:使用“head”请求方式;
-k:激活HTTP中的“keepAlive”特性;
-n:指定测试会话使用的请求数;
-p:指定包含数据的文件;
-q:不显示进度百分比;
-T:使用POST数据时,设置内容类型头;
-v:设置详细模式等级;
-w:以HTML表格方式打印结果;
-x:以表格方式输出时,设置表格的属性;
-X:使用指定的代理服务器发送请求;
-y:以表格方式输出时,设置表格属性。

参数

主机:被测试主机。

ARTS第六周

ARTS第六周

ARTS是什么?

Algorithm:每周至少做一个leetcode的算法题;
Review:阅读并点评至少一篇英文技术文章;
Tip/Techni:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章。

Algorithm

Review

分享一篇关于mapreduce的命令的文章,来自官网

Tips

分享一篇关于机房断电导致的服务器无法启动的文章解决—— lvm inactive问题定位及解决

Share

关于一篇shell的文章——shell详解(完善中…)