linux发行版问题

以易用为出发点,优先选择Debian,成熟稳定的发行版本,超级牛力的apt包管理系统。
先锋模式的Arch,滚动式更新及AUR软件体系。
以充分学习linux为导向的,完全自主编译的Gentoo,LTS。
特殊类型的OS,隐私用以liveCD为主的tail,渗透用的kail。

个人技巧

ssh登录需设置密钥为不可读写,使用密钥可alias为快捷方式,ssh-[主机名]
kill可直接输入对应程序名称,tab可自动补完成对应的进程号

用户命令

id – 显示用户身份号
chmod – 更改文件模式
umask – 设置默认的文件权限
su – 以另一个用户的身份来运行 shell
sudo – 以另一个用户的身份来执行命令
chown – 更改文件所有者
chgrp – 更改文件组所有权
passwd – 更改用户密码

键盘操作

移动光标
Ctrl-a 移动光标到行首。
Ctrl-e 移动光标到行尾。
Ctrl-f 光标前移一个字符;和右箭头作用一样。
Ctrl-b 光标后移一个字符;和左箭头作用一样。
Alt-f 光标前移一个字。
Alt-b 光标后移一个字。
Ctrl-l 清空屏幕,移动光标到左上角。clear 命令完成同样的工作。

修改文本
Ctrl-d 删除光标位置的字符。
Ctrl-t 光标位置的字符和光标前面的字符互换位置。
Alt-t 光标位置的字和其前面的字互换位置。
Alt-l 把从光标位置到字尾的字符转换成小写字母。
Alt-u 把从光标位置到字尾的字符转换成大写字母。

剪切和粘贴
Readline 的文档使用术语 killing 和 yanking 来指我们平常所说的剪切和粘贴。 剪切下来的本文被存储在一个叫做剪切环(kill-ring)的缓冲区中。
Ctrl-k 剪切从光标位置到行尾的文本。
Ctrl-u 剪切从光标位置到行首的文本。
Alt-d 剪切从光标位置到词尾的文本。
Alt-Backspace 剪切从光标位置到词头的文本。如果光标在一个单词的开头,剪切前一个单词。
Ctrl-y 把剪切环中的文本粘贴到光标位置。

自动补全
tab
Alt-? 显示可能的自动补全列表。在大多数系统中,你也可以完成这个通过按 两次 tab 键,这会更容易些。
Alt-* 插入所有可能的自动补全。当你想要使用多个可能的匹配项时,这个很有帮助。

bash基本操作

pwd 打印出当前工作目录名
cd 更改目录
cd 更改工作目录到你的家目录
cd - 更改工作目录到先前的工作目录
cd ~user_name 更改工作目录到用户家目录
ls 列出目录内容
以 . 字符开头的文件名是隐藏文件,ls -a才可以列出他们
-l 以长格式显示结果
-d 指定一个目录名 ls列出这个目录中的内容
-h 当以长格式列出时,以人们可读的格式而不是以字节数来显示文件大小
-F 在列出的名字后加上一个指示符
-r 以相反顺序显示排序
-S 以文件大小排序
-t 以时间顺序排序
file 确定文件类型
less 阅读文本文件
cp 复制文件和目录
mv 移动/重命名文件和目录
rm 删除文件和目录
mkdir 创建目录
ln 创建硬链接和符号链
-s 创建符号链接
type 说明命令类型
which 显示会执行哪个可执行程序
man 显示会命令手册
apropos 显示一系列适合的命令
info 显示命令info
whatis 显示命令简介描述
alias 创建命令别名
unalias 删除命令别名
〉 重定向标准输出
可用于创建文件或删除文件内容
< 重定向标准输入

输出结果添加到文件之后
文件描述符
0 标准输入
1 标准输出
2 标准错误
cat 读取一个或多个文件复制到标准输出,也用来组合文件(重定向到文件)或创建简短的文本
| 管道线 将管道左的标准输出作为管道右的标准输入(左右为命令)
grep 匹配文本

管道线经常用来对数据完成复杂的操作。有可能会把几个命令放在一起组成一个管道线。 通常,以这种方式使用的命令被称为过滤器

head/tail 打印文件前十行/后十行 可使用-n调整行数,使用-f持续监控,直到Ctrl+C
echo 显示一行文本
clear 清空屏幕
history 显示历史列表

启动递增搜索, 输入 Ctrl-r,其后输入你要寻找的文本。当你找到它以后,你可以敲入 Enter 来执行命令, 或者输入 Ctrl-j,从历史列表中复制这一行到当前命令行。再次输入 Ctrl-r,来找到下一个 匹配项(向上移动历史列表)。输入 Ctrl-g 或者 Ctrl-c,退出搜索

通配符

通配符基本用法

  • 匹配任意多个字符(包括0/1)
    ? 匹配任意一个字符(不包括0个)
    [characters] 匹配任意一个属于字符集中的字符
    [!characters] 匹配任意一个不是字符集中的字符
    [[:class:]] 匹配任意一个属于指定字符类中的字符

通配符普通字符类

[:alnum:] 匹配任意一个字母或数字
[:alpha:] 匹配任意一个字母
[:digit:] 匹配任意一个数字
[:lower:] 匹配任意一个小写字母
[:upper:] 匹配任意一个大写字母

系统管理

网络

ping - 发送 ICMP ECHO_REQUEST 软件包到网络主机
traceroute - 打印到一台网络主机的路由数据包
netstat - 打印网络连接,路由表,接口统计数据,伪装连接,和多路广播成员
ftp - 因特网文件传输程序
wget - 非交互式网络下载器
ssh - OpenSSH SSH 客户端(远程登录程序)

系统操作

检测系统:sudo tail -f /var/log/messages

ps – 报告当前进程快照
top – 显示任务
jobs – 列出活跃的任务
bg – 把一个任务放到后台执行
fg – 把一个任务放到前台执行
kill – 给一个进程发送信号
killall – 杀死指定名字的进程
shutdown – 关机或重启系统

| 命令名 | 命令描述 |
| pstree | 输出一个树型结构的进程列表,这个列表展示了进程间父/子关系。 |
| vmstat | 输出一个系统资源使用快照,包括内存,交换分区和磁盘 I/O。 为了看到连续的显示结果,则在命令名后加上延时的时间(以秒为单位)。例如,“vmstat 5”。 终止输出,按下 Ctrl-c 组合键。 |
| xload | 一个图形界面程序,可以画出系统负载的图形。 |
| tload | 与 xload 程序相似,但是在终端中画出图形。使用 Ctrl-c,来终止输出。

printenv - 打印部分或所有的环境变量
set - 设置 shell 选项
export — 导出环境变量,让随后执行的程序知道。
alias - 创建命令别名

文件系统

mount – 挂载一个文件系统
umount – 卸载一个文件系统
fsck – 检查和修复一个文件系统
fdisk – 分区表控制器
mkfs – 创建文件系统
fdformat – 格式化一张软盘
dd — 把面向块的数据直接写入设备
genisoimage (mkisofs) – 创建一个 ISO 9660的映像文件
wodim (cdrecord) – 把数据写入光存储媒介
md5sum – 计算 MD5检验码

设备管理

模式 设备
/dev/fd* 软盘驱动器
/dev/hd* 老系统中的 IDE(PATA)磁盘。典型的主板包含两个 IDE 连接器或者是通道,每个连接器 带有一根缆线,每根缆线上有两个硬盘驱动器连接点。缆线上的第一个驱动器叫做主设备, 第二个叫做从设备。设备名称这样安排,/dev/hdb 是指第一通道上的主设备名;/dev/hdb 是第一通道上的从设备名;/dev/hdc 是第二通道上的主设备名,等等。末尾的数字表示 硬盘驱动器上的分区。例如,/dev/hda1是指系统中第一硬盘驱动器上的第一个分区,而 /dev/hda 则是指整个硬盘驱动器。
/dev/lp* 打印机
/dev/sd* SCSI 磁盘。在最近的 Linux 系统中,内核把所有类似于磁盘的设备(包括 PATA/SATA 硬盘, 闪存,和 USB 存储设备,比如说可移动的音乐播放器和数码相机)看作 SCSI 磁盘。 剩下的命名系统类似于上述所描述的旧的/dev/hd命名方案。
/dev/sr
光盘(CD/DVD 读取器和烧写器)

日志处理

子系统

Linux系统一般有3个主要的日志子系统:连接时间日志、进程统计日志和错误日志。

连接时间日志:连接时间日志由多个程序执行,把记录写入到/var/og/wtmp和/var/run/utmp。ogin等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
    进程统计日志:进程统计日志由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个记录。进程统计的目的是为系统中的基本服务提供命令使用统计。
    错误日志:错误日志由sysogd(8)执行。各种系统守护进程、用户程序和内核通过sysog(3)向文件/var/og/messages报告值得注意的事件。另外还有许多UNIX类程序创建日志,像HTTP和FTP这样提供网络服务的服务器也有详细的日志

日志消息级别

    0 EMERG(紧急):会导致主机系统不可用的情况
    1 ALERT(警告):必须马上采取措施解决的问题
    2 CRIT(严重):比较严重的情况
    3 ERR(错误):运行出现错误
    4 WARNING(提醒):可能会影响系统功能的事件
     5 NOTICE(注意):不会影响系统但值得注意
    6 INFO(信息):一般信息
    7 DEBUG(调试):程序或系统调试信息等

日志文件

对于Linux系统而言,所有的日志文件都在/var/log下。详细分类如下:

    /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
    /var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
    /var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
    /var/log/boot.log — 包含系统启动时的日志。
    /var/log/daemon.log — 包含各种系统后台守护进程日志信息。
    /var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
    /var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
    /var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
    /var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
    /var/log/user.log — 记录所有等级用户信息的日志。
    /var/log/Xorg.x.log — 来自X的日志信息。
    /var/log/alternatives.log – 更新替代信息都记录在这个文件中。
    /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
    /var/log/cups — 涉及所有打印信息的日志。
    /var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
    /var/log/yum.log — 包含使用yum安装的软件包信息。
    /var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
    /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
    /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
    /var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。

除了上述Log文件以外, /var/log还基于系统的具体应用包含以下一些子目录:

    /var/log/httpd/或/var/log/apache2 — 包含服务器access_log和error_log信息。
    /var/log/lighttpd/ — 包含light HTTPD的access_log和error_log。
    /var/log/mail/ – 这个子目录包含邮件服务器的额外日志。
    /var/log/prelink/ — 包含.so文件被prelink修改的信息。
    /var/log/audit/ — 包含被 Linux audit daemon储存的信息。
    /var/log/samba/ – 包含由samba存储的信息。
    /var/log/sa/ — 包含每日由sysstat软件包收集的sar文件。
    /var/log/sssd/ – 用于守护进程安全服务。

日志管理

who

who 命令显示关于当前在本地系统上的所有用户的信息。显示以下内容:登录名、tty、登录日期和时间。输入 who am i 或 whoami 显示您的登录名、tty、您登录的日期和时间。如果用户是从一个远程机器登录的,那么该机器的主机名也会被显示出来。

who 命令也能显示自从线路活动发生以来经过的时间、命令解释器(shell)的进程标识、登录、注销、重新启动和系统时钟的变化,还能显示由初始化进程生成的其它进程。

语法 who [ -a | -b -d -i -l -m -p -q -r -s -t -u -w -A -H -T ] [ File ]
who am { i | I }

参数:
-a 处理 /etc/utmp 文件或有全部信息的指定文件。等同于指定 -bdlprtTu 标志。
-b 指出最近系统启动的时间和日期。
-d 显示没有被 init 重新生成的所有到期的进程。退出字段用于显示死进程并包含死进程的终止和退出值(由 wait 进程返回的)。(这个标志用于通过察看应用程序返回的错误号来确定一个进程的结束原因。)
-l 列出任何登录进程。
-m 仅显示关于当前终端的信息。who -m 命令等同于 who am i 和 who am I 命令。
-p 列出任何当前活动的和以前已由 init 生成的活动进程。
-q 打印一份在本地系统上的用户和用户数的快速清单。
-r 显示当前进程的运行级别。
-s 仅列出名字、线路和时间字段。这个标志是缺省值;因此,who 和 who -s 命令是等效的。
-t 显示 root 用户上一次用 date 命令对系统时钟做的更改。如果 date 命令自从系统安装以来还没有被运行过, who -t 命令就不产生输出。
-u 或 -i 显示每个当前用户的用户名、tty、登录时间、线路活动和进程标识。
-A 显示在 /etc/utmp 文件中的所有记帐项。这些项是通过 acctwtmp 命令生成的。
-H 显示一个头(标题)。
--help  在线帮助。
--version  显示版本信息。

复制代码
实例:

  1. 要显示关于谁正在使用本地系统节点的信息,请输入:

    who
    joe lft/0 Jun 8 08:34

复制代码
2. 要显示您的用户名,请输入:

who am i
george lft/0 Jun 8 08:34

复制代码
3. 要显示本地系统节点的运行级别,请输入:

who -r
运行级别 2 2013-10-13 15:37

复制代码
w

w是显示目前登入系统的用户信息。

执行这项指令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行linux w 命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

语法:w [-fhlsuV][用户名称]

参数:

last

last命令列出目前与过去登入系统的用户相关信息。

单独执行last指令,它会读取位于/var/log目录下,名称为wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

语法:last [-adRx][-f <记录文件>][-n <显示列数>][帐号名称...][终端机编号...]

参数:

-a  把从何处登入系统的主机名称或IP地址,显示在最后一行。


-d  将IP地址转换成主机名称。
-f <记录文件>  指定记录文件。
-n <显示列数>或-<显示列数>  设置列出名单的显示列数。
-R  不显示登入系统的主机名称或IP地址。
-x  显示系统关机,重新开机,以及执行等级的改变等信息。

lastlog

lastlog 报告所有用户的最近登录情况,或者指定用户的最近登录情况

语法:lastlog [选项]

选项

-b, --beforeDAYS只显示老于 DAYS 的最近登录记录。
-h, --help现实帮助信息并退出。
-R, --rootCHROOT_DIR Apply changes in the CHROOT_DIR directory and use the configuration files from the CHROOT_DIR directory.
-t, --timeDAYS 只现实新于 DAYS 的最近登录记录。
  -u, --userLOGIN|RANGE 现实指定用户的最近登录记录。

reference:

The Linux Command Line 中文版 https://www.kancloud.cn/thinkphp/linux-command-line
Linux 引导过程内幕 https://www.ibm.com/developerworks/cn/linux/l-linuxboot/
日志 http://www.cnhonkerarmy.com/forum.php?mod=viewthread&tid=220249&highlight=linux