指定命令别名 |
alias ..='cd ..'
命令连接符 |
持续的执行命令,不管错误
[命令1]; [命令2]; [命令3];
前一个正确才执行下一个
[命令1] && [命令2] && [命令3];
前一个错误,就执行下一个
[命令1] || [命令2] || [命令3];
限制用户进程数 |
vim /etc/security/limits.conf
* hard nproc 200
给予用户sudo权限 |
vim /etc/sudoers
...
## Allow root to run any commands anywhere
## 允许root用户以root权限运行任何命令
## 允许root用户以root权限运行任何命令
root ALL=(ALL) ALL
...
## Allows people in group wheel to run all commands
## 让wheel用户组的所有用户默认拥有sudo权限
## 让wheel用户组的所有用户默认拥有sudo权限
# %wheel ALL=(ALL) ALL
## Same thing without a password
## 让wheel用户组的所有用户,不用输入密码即可拥有sudo权限
## 让wheel用户组的所有用户,不用输入密码即可拥有sudo权限
# %wheel ALL=(ALL) NOPASSWD: ALL
## Allows members of the users group to mount and unmount the
## cdrom as root
## 给予用户指定的权限,命令需要写完整的路径
## 禁止某些命令:%users ALL=!/user/sbin/useradd
## 给予用户指定的权限,命令需要写完整的路径
## 禁止某些命令:%users ALL=!/user/sbin/useradd
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
...
切换用户同时进入用户家目录 |
su zach -
我是谁? |
who 谁在线
w 详细在线信息
whoami 当前的有效用户
who am i 当前的实际用户
目录与文件高亮 |
alias ls='ls --color=auto'
/etc/bashrc # 添加后所有用户有效
/home/<user>/.bashrc # 仅对当前用户有效
文件权限 |
s表示SUID(Set UID)/SGID
SUID (4755)
ls -l /bin/su
-rwsr-xr-x.
su这个命令,无论任何人执行都将具有root权限,这个权限仅在su命令中有效
chmod u+x file
SUID (4755)
ls -l /bin/su
-rwsr-xr-x.
su这个命令,无论任何人执行都将具有root权限,这个权限仅在su命令中有效
chmod u+x file
SGID (2770)
chmod 2770 shop
drwxrws---
在shop目录里创建的文件所属组都是shop,组成员可以互相修改对方创建的文件
t权限的名称是Sticky Bit(SBIT),仅对目录有效
SBIT (1777)
SBIT (1777)
ls -ld /tmp
drwxrwxrwt.
drwxrwxrwt.
任何人都可以在里面创建目录,只能控制自己的文件,其它可以查看,不能修改
搜索文件 |
搜索“ls”命令以及它的联机帮助文档所在的位置
whereis ls
yum install -y locate
updatedb
locate -b "\ls"
查找命令,确认是否安装
which gcc
列出一天内变化的文件的详细信息
find / -mtime -1 -exec ls -l {} \;
“{}”起始是一个站位符,在find命令的执行过程中会不断地被替换成当前找到的文件。
“;”是结束标记
文件压缩打包 |
tar
压缩率 gz<bz2<xz
压缩率 gz<bz2<xz
tar -xvf filename.tar
z代表gz
j代表bz2
J代表xz
tar -zcvf filename.tar.gz FILES
tar -zxvf filename.tar.gz
tar -jcvf filename.tar.bz2 FILES
tar -jxvf filename.tar.bz2
tar -Jcvf filename.tar.xz FILES
tar -Jxvf filename.tar.xz
cpio
find ... | cpio -ocB > filename
cpio -idc < filename
find ... | cpio -ocB > filename
cpio -idc < filename
mkfifo可以创建命名管道
find /boot | cpio -ocB > /tmp/boot.img
find /boot | cpio -ocB | gzip -9 > /tmp/boot.img
cpio -idc < /tmp/boot.img //未压缩
gzip -dc /tmp/boot.img | cpio -idc // 压缩过
文件前后台 |
tail -f /etc/profile
Ctrl+Z
bg
tail -f /etc/bashrc &
jobs
fg 1
kill -9 %2
kill -9 %2
jobs
任务脱离终端
nohup [命令与参数] &
计划任务 |
at 10:00 tomorrow
at>/bin/echo 123;
Ctrl+D
at -l
crontab -e
crontab -l
crontab -r
crontab -u root
2.4.3 守护进程的启用 |
vim /etc/xinetd.d/rsync
disable=yes 代表该守护进程处于关闭状态
disable=no 代表该守护进程处于开启状态
/etc/init.d/xinetd restart重启super daemon
2.4.4 全面了解程序信息 |
ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 S 1000 6210 6209 0 80 0 - 1698 wait pts/0 00:00:01 bash
0 R 1000 6258 6210 0 80 0 - 1173 - pts/0 00:00:00 ps
字段 | 说明 |
F | 程序标志,代表程序的执行权限,常见的取值有:0,普通权限;4,root 权限;1,此程序仅执行了fork二没有执行exec |
S | 程序状态:R,运行中;S,睡眠状态,可唤醒;D,不可被唤醒状态,一般是在等待I/O;T,停止状态,比如被调试的时候;Z,僵尸状态,程序已经终止但却无法被移除至内存外 |
UID | 此进程拥有者的UID |
PID | 此进程的进程ID |
PPID | 此进程的父进程ID |
C | CPU的使用率,单位为百分比 |
PRI | 运行优先级 |
NI | 运行优先级调整值 |
ADDR | 指出该程序在内存的哪个部分,如果是个 running 的程序,一般就会显示 “-” |
SZ | 此程序用掉的内存 |
WCHAN | 表示目前程序是否运行中,若为 “-” 表示正在运行中 |
TTY | 登陆者的终端机位置,若为远程登陆则使用动态终端界面 |
TIME | 使用掉的CPU时间,注意,是此程序实际话费CPU运行的时间,而不是系统时间 |
CMD | 就是 command 的缩写,也就是程序名称 |
ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 19232 1480 ? Ss 18:54 0:00 /sbin/init
root 2 0.0 0.0 0 0 ? S 18:54 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 18:54 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 18:54 0:02 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 18:54 0:00 [stopper/0]
......
postfix 1375 0.0 0.6 80936 3352 ? S 22:15 0:00 pickup -l -t fifo -u
root 1376 0.0 0.2 110232 1148 pts/0 R+ 22:20 0:00 ps aux
字段 | 说明 |
USER | 该进程所属的使用者用户 |
PID | 该进程的进程 ID |
%CPU | 该进程所占 CPU 资源的百分比 |
%MEM | 该进程所占实体内存的百分比 |
VSZ | 该进程用掉的虚拟内存量 (kbytes) |
RSS | 该进程用掉的固定的内存量 (kbytes) |
TTY | 该进程所运行的终端机,若与终端机无关则显示 “?”。另外,tty1-tty6 是本机上面的登陆者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序 |
STAT | 该进程的当前状态,与 “ps-l” 的 S 字段相同 (R/S/T/Z) |
START | 该进程启动时间 |
TIME | 该进程使用 CPU 运行的时间 |
COMMAND | 该程序的实际命令 |
top
top - 当前时间 up 系统连续运行时间,已登录系统的用户数(1 user),系统在1、5、15分钟的平均工作负载(load average)
top - 22:39:44 up 2 days, 23:01, 1 user, load average: 0.00, 0.01, 0.05
进程的总数、正在运行数、睡眠数、停止数和僵尸数
top - 22:39:44 up 2 days, 23:01, 1 user, load average: 0.00, 0.01, 0.05
进程的总数、正在运行数、睡眠数、停止数和僵尸数
Tasks: 60 total, 1 running, 59 sleeping, 0 stopped, 0 zombie
用户空间占用CPU的百分比(%us)、内核空间占用CPU的百分比(%sy)、改变过优先级的进程占用CPU的百分比(%ni)、空闲CPU百分比(%id)、I/O等待专用CPU的百分比(%wa)、硬中断占用CPU的百分比(%hi)、软中断占用CPU的百分比(%si)、被强制等待虚拟CPU的时间(%st,在虚拟系统中有效)
用户空间占用CPU的百分比(%us)、内核空间占用CPU的百分比(%sy)、改变过优先级的进程占用CPU的百分比(%ni)、空闲CPU百分比(%id)、I/O等待专用CPU的百分比(%wa)、硬中断占用CPU的百分比(%hi)、软中断占用CPU的百分比(%si)、被强制等待虚拟CPU的时间(%st,在虚拟系统中有效)
%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
物理内存总数、已用数、空闲数、缓冲数
物理内存总数、已用数、空闲数、缓冲数
KiB Mem: 445740 total, 340756 used, 104984 free, 29148 buffers
交换分区总数、已用数、空闲数、缓存数
交换分区总数、已用数、空闲数、缓存数
KiB Swap: 102396 total, 0 used, 102396 free, 277472 cached
VIRT虚拟内存用量(只是需要的,不是实际使用量)、RES常驻内存量(实际使用量,包含共享部分)、SHR共享内存。第一个进程所占用的真是物理内存:RES-SHR
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6270 pi 20 0 5224 2460 2124 R 1.0 0.6 0:00.12 top
1 root 20 0 2152 1400 1296 S 0.0 0.3 0:10.18 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:01.55 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root 20 0 0 0 0 S 0.0 0.0 0:01.98 rcu_preempt
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_sched
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
11 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kdevtmpfs
12 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
......
CPU占比
超过100%的情况属于正常,16核心时,最大占用1600%
工作负载(load average)
0.00,表示目前桥面上没有任何的车流。
1.00,表示刚好在这座桥的承受范围内。
超过1.00,说明这座桥已经超出符合,交通严重的拥堵。2.00的情况说明车流已经超出桥所能承受的一倍,3.00的话说明桥上还有超出桥符合两倍多的车辆正在等待
16核心,负载可以达到16.00
top -d 2 -p 10
表示2秒刷新一次,值监控PID为10的进程
P键,让单个进程信息按照CPU使用率排序;
M键,以内存的使用率排序;
N键,以进程的PID排序..
pstree
2.5.2 利用软件管理工具rpm和dpkg |
RPM | DPKG | |
安装 | rpm -ivh <rpm软件包名> | dpkg -i <deb软件包名> |
查询 | rpm -qa xxx* rpm -ql <rpm包名> |
dpkg -l xxx* dpkg --listfiles xxx |
卸载 | rpm -e <rpm软件名> | dpkg -e <deb软件名> |
2.5.3 更酷的线上升级 |
yum | apt-get | |
安装 | yum install <package_name> | apt-get install <package_name> |
升级 | yum update <package_name> | 刷新软件源,建立更新软件包列表 apt-get update 将系统中的所有软件包一次性升级到最新版本 apt-get upgrade |
卸载 | yum remove <package_name> | apt-get remove <package_name> 清除软件包的同时清除配置 apt-get purge remove <package_name> |
查询 | 1.查找软件包: yum search <keyword> 2.列出所有已安装的软件包: yum list installed 3.获取软件包信息: yum info <package_name> 4.列出软件包提供哪些文件: yum provides <package_name> |
1.查找软件包: apt-cache search <keyword> or <regular expression> 2.获取指定软件包的详细信息: apt-cache show <package_name> 3.获取软件包版本和软件包的依赖关系: apt-cache showpkg <package_name> |
清除缓存 | 下载的软件包和header储存在cache中不会自动删除。使用 yum clean 完成清除磁盘空间的工作 1.清除 header: yum clean headers 2.清除下载的 rpm 包: yum clean packages 3.清除缓存的软件包及旧 headers: yum clean all |
1.清理整个软件包缓冲区: apt-get clean 2.按照依赖关系清理缓冲区中多余的软件包: apt-get autoclean |
apt的执行效率高于使用Python携程的yum,Python升级注意yum
2.6.1
2.6.2 磁盘的基本操作 |
dd
语法:
dd if=input_file of=out_file
dd if=input_file of=out_file
dd if=/etc/bashrc of=./bashrc
等同于
cp /etc/bashrc ./bashrc
dd if=/etc/bashrc
等同于
cat /etc/bashrc
制作分区镜像:
dd if=/dev/sda1 of=./sda1.img
dd if=/dev/sda1 | gzip -9 > ./sda1.img
恢复镜像
gzip -dc ./sda.img | dd of=/dev/sda
bs指定依次读写的字节数
count指定读写次数
备份磁盘主引导记录
dd if=/dev/sda of=./mbr.img bs=512 count=1
销毁磁盘数据,urandom代表随机数,每次读入的数据都不会相同
dd if=/dev/urandom of=/dev/sda1
测试磁盘读写速度,zero代表0,每次读入数据都是0;null主要面对写,相当于黑洞。
dd if=/dev/zero of=./test.file bs=1024 count=1000000
dd if=./test.file bs=8k | dd of=/dev/null
修复磁盘
dd if=/dev/sda of=/dev/sda
fsck
语法:
fsck -t 文件系统 设备名
系统启动阶段执行,只能对文件系统的损坏进行修复,对磁盘的损坏是没有办法的。
系统启动阶段执行,只能对文件系统的损坏进行修复,对磁盘的损坏是没有办法的。
fsck -f -t ext3 /dev/hda3
参数“-f”要求磁盘没有报错时也进行强制检查(非法关机时磁盘报错)。
mount
mount [-t 文件系统] 设备名称 挂接点
很多时候“-t”是多余的,Linux会从ExtN类的即inode文件系统的超级块中读取类型,大部分用于windows分区时。(NFS系统等)
直接挂载未压缩的镜像
mount -o loop ./sda1.img /mnt/sda1
mount -o loop ./sda1.img /mnt/sda1
挂载光盘
mount -o loop ./CentOS-6.6_x86_64-bin-DVD1.iso /mnt/centos
ro说明挂接的磁盘是只读的
rw说明挂接的磁盘是可读写的
loop说明要挂接的文件是一个虚拟设备,而且这个虚拟设备是环形的设备
loop说明要挂接的文件是一个虚拟设备,而且这个虚拟设备是环形的设备
umount /dev/sdb1
分区fdisk、cfdisk
格式化mkfs.ext3、mkfs
2.6.3 /etc/fstab文件——决定分区的连接 |
#
# /etc/fstab
# Created by anaconda on Sun Jan 18 20:48:12 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
UUID=69f95742-a279-4e43-b4c6-926cd5247f96 /boot ext4 defaults 1 2
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
- 设备文件、磁盘卷标或者UUID
- 挂载点
- 文件系统类型
- mount命令的-o选项参数,defaults不给定-o选项时的行为
- 是否使用dump命令备份,0代表不做,1代表每天备份
- 是否使用fsck命令检查磁盘;0代表不检查,1代表最早检查(一般只有树根“/”是1),2也是要检查,只是比1晚(除树根之外一般都使用这个)
blkid查看UUID***
swap
fdisk创建,
mkswap格式化
swapon开启
swapoff关闭
创建1G的交互文件
dd if=/dev/zero of=/tmp/swap bs=1M count=1024
mkswap /tmp/swap
2.8.1 勤勤恳恳的bash |
别名功能(alias):为一个命令简历另一个名称。
历史命令(history):用history工具程序记录了最近你执行过的命令。
历史命令(history):用history工具程序记录了最近你执行过的命令。
工作控制(job contorl):
ps --列出正在运行的进程kill --向一个或多个进程发信号(经常是杀掉进程)jobs --列出自己运行的进程bg --将进程放到后台fg --将进程放到前台
kill -l 查看信号
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
2.8.2 环境变量 |
set、env和export设置环境变量,
unset命令来清除设置,
readonly来设置只读属性。
export ENVTEST="ENV1"
env | grep ENVTEST
unset ENVTEST
env | grep ENVTEST
2.8.3 bash 的配置文件 |
/etc/profile 系统整体的配置文件。
/etc/inputrc 用来设置bash的热键、[Tab] 是否有声音等信息。
/etc/profile.d/*.sh 这个目录下的文件规定了bash的操作界面、语系以及一些公共的命令别名。
/etc/sysconfig/il8n 这个文件是供/etc/profile.d/lang.sh调用,决定bash默认使用何种语系。
个人配置读取:
~/.bash_profile、 ~/.bash_login 和 ~/.profile
如果~/.bashrc文件存在,~/.bash_profile会去读取环境设置等
如果~/.bashrc文件存在,~/.bash_profile会去读取环境设置等
~/.bash_history 记录历史命令
~/.bash_logout 当用户离开时调用
如果/etc/bashrc存在,会被~/.bashrc调用
主要工作:
(1)依据不同的UID给出umask值
(2)依据不同的UID给出ps1变量
(3)调用/etc/profile.d/*.sh的设置
source命令可以将配置文件的内容读入当前shell环境中
2.9.4 排序和去重 |
统计最常用的十条历史命令及其使用次数:
cut -d ' ' -f1 ~/.bash_history | sort -d | uniq -c | sort -nr | head
详解:
cut -d ' ' -f1 ~/.bash_history
从~/.bash_history文件中以空格为分隔符(-d ' ')剪出多列,则为-f1,3等)
从~/.bash_history文件中以空格为分隔符(-d ' ')剪出多列,则为-f1,3等)
sort -d
按字典序(-d)排序剪出来的第一列
按字典序(-d)排序剪出来的第一列
uniq -c
对文本去重,并统计次数(-c)。
sort -nr
按数字排序(-n)并降序(-r)排列,没有-r默认是升序排列。
head
输出显示文件前面部分的内容,默认显示前面10行的内容