GNU/Linux
1 APT
1.1 设置国内源
sudo gedit /etc/apt/sources.list:
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
上述源里的 bionic
是当前版本的别名,需要正确。
版本名使用如下命令查看:
lsb_release -a
1.2 基本命令
# 从远程更新软件列表 apt update # 查询是否存在某软件 apt search tomcat apt search ^tomcat # 安装软件 apt install tomcat8 # 卸载软件 apt remove tomcat8 # 清理 apt autoclean apt autoremove
apt 命令是一些更加底层的命令,比如 apt-get/apt-cache
的进一步封装。
在一些旧的系统中,只有 apt-get/apt-cache
并没有 apt 命令,但它们使用时类似的。
2 常用命令
2.1 文件相关
# list, 查看目录文件 ls ls -a ls --all # 等同于上面 ls -l ls -al # move, 重命名或移动 mv aaa.txt bbb.txt mv /tmp/xxx.txt ~/ # copy, 复制文件 cp /tmp/xxx.txt ~/aaa/yyy.txt cp /tmp/xxx.txt ~/aaa/ # 可以只指定目标文件夹 cp -r /tmp/xxx ~/bbb/ # 使用 -r 移动整个文件夹 # remove, 删除文件 rm xxx.txt rm -r /sss/ # 删除文件夹,使用 -r rm -rf /sss/ # 强删,即使出错也会继续。危险操作
2.2 归档、压缩
归档、压缩是两个不同的阶段:
- tar 用来归档
- gzip 用来压缩
在 tar 中,可以使用 -z 参数让其自动调用 gzip 处理压缩。
# 将若干文件压缩为 xxx.tar.gz tar czf xxx.tar.gz a.txt b.txt c.txt # c 为 create,是创建的意思 tar czvf xxx.tar.gz a.txt b.txt c.txt # v 参数用来设置打印压缩过程 (verbose) # 解压缩 tar xzf xxx.tar.gz # x 表示 extract,是解压缩的意思 tar xzvf xxx.tar.gz # x 表示 extract,是解压缩的意思
2.3 远程连接
首先,在服务端安装并开启 ssh 服务:
# 安装 openssh-server sudo apt update sudo apt install openssh-server # 确保 sshd 服务开启 sudo systemctl status sshd # 如果服务器没有开启,那么需要开启 sudo systemctl start sshd # 可以设置 sshd 服务开机自动启动 sudo systemctl enable sshd
其次,确定服务器的 ip 地址:
ip addr
然后,就可以在任何网络可达的机器上,通过 ssh 客户端连接服务器了。
在 windows 上,一般使用 PuTTY 工具。
连接语法:
ssh name@192.168.3.44
另外,可以使用 scp
命令实现文件传输:
scp aaa.zip user@192.168.3.3:~/target/ scp -r user@192.168.3.3:~/target/ ~/ # 复制文件夹到本地
3 命令行下常用快捷键
Ctrl-a
, 返回行首Ctrl-e
, 到行尾Ctrl-n
, 下一页Ctrl-p
, 上一页Ctrl-l
, 刷新屏幕Ctrl-k
, 删除到行尾Ctrl-y
, 粘贴上一次删除的内容Alt-b
, 后退一个单词Alt-f
, 前进一个单词Alt-d
, 删除下一个单词
另外,如果要检索历史 (history) 命令,使用 Ctrl-r
4 Linux 的目录结构
目录树
4.1 /bin
全局可执行文件
4.2 /etc
全局配置文件
4.3 /usr
User Resources,用户的资源文件
4.3.1 /usr/share
4.3.2 /usr/lib
4.3.3 /usr/local
4.4 /home
用户的主目录
4.5 /dev
硬件
4.6 /opt
一般用来放置一些第三方的软件,比如自己下载的 tomcat 等
5 Miscellaneous
5.1 Linux 常用命令 (add by 成盛文)
5.1.1 文件与目录操作
- basename:从文件名中去掉路径和扩展名
- cd:切换当前工作目录到指定目录
- chgrp:改变文件所属组
- chmod:改变文件的权限
- chown:改变文件的所有者和组
- cp:复制文件或目录
- dd:复制文件并转换文件内容
- file:确定文件类型
- find:在指定目录下查找文件并执行指定的操作
- ln:创建文件链接
- locate/slocate:快速定位文件的路径
- ls/dir/vdir:显示目录内容
- mkdir:创建目录
- mv:移动或重命名文件
- pwd:显示当前工作目录
- rename:重命名文件
- rm:删除文件或目录
- rmdir:删除空目录
- touch:修改文件的时间属性
- updatedb:创建或更新slocate数据库
- whereis:显示指令程序、源代码和man手册页
- which:显示指令的绝对路径
5.1.2 备份与压缩
- ar:创建、修改归档文件和从归档文件中提取文件
- arj:.arj文件压缩指令
- bunzip2:压缩bzip2格式的压缩文件
- bzcat:解压缩文件到标准输出
- bzip2:创建.bz2格式的压缩文件
- bzip2recover:修复损坏的.bz2文件
- bzless/bzmore:解压缩.bz2文件并分屏显示内容
- compress:压缩数据文件
- cpio:存取归档包中的文件
- dump:文件系统备份
- gunzip:解压缩由gzip压缩的文件
- gzexe:压缩可执行程序
- gzip:GNU的压缩和解压缩工具
- lha:压缩和解压缩指令
- resotre:还原由dump备份的文件或文件系统
- tar:创建备份档案文件
- unarj:解压缩.arj文件
- uncompress:解压缩.Z文件
- unzip:解压缩.zip文件
- zcat:解压缩文件并送到标准输出
- zforce:强制gzip格式的文件加上.gz扩展名
- zip:压缩文件
- zipinfo:显示zip压缩文件的详细信息
- znew:将“.Z”文件转换成“.gz”文件
5.1.3 文本处理
- cat:链接文件并显示到标准输出
- cksum:检查和计算文件循环冗余校验码
- cmp:比较两个文件的差异
- col:过滤控制字符
- colrm:从输入中过滤掉指定的列
- comm:比较两个有序文件的不同
- csplit:分割文件
- cut:显示文件中每行的指定内容
- diff3:比较3个文件的不同
- diff:比较并显示两个文件的不同
- diffstat:根据diff指令的结果显示统计信息
- ed:行文本编辑器
- emacs:全屏文本编辑器
- ex:文本编辑器
- expand:将Tab转换为空白(Space)
- fmt:最优化文本格式
- fold:设置文件显示的行宽
- grep/egrep/fgrep:显示文件中匹配的行
- head:输出文件开头部分内容
- ispell:交互式拼写检查程序
- jed:文本编辑器
- joe:编辑文本文件
- join:合并两个文件的相同字段
- less:分屏查看文本文件
- look:显示文件中以特定字符串开头的行
- more:分屏查看文本文件
- od:以数字编码输出文件内容
- paste:合并文件的内容
- pico:文本编辑器
- sed:流文件编辑器
- sort:排序数据文件
- spell:拼写检查
- split:分割文件
- sum:计算并显示文件的校验码
- tac:反序显示文件内容
- tail:输出文件尾部部分内容
- tee:将输入内容复制到标准输出和指定文件
- tr:转换或删除文件中的字符
- unexpand:将空白(Space)转换为Tab
- uniq:删除文件中的重复行
- vi:全屏文本编辑器
- wc:计算文件的字节数、单词数和行数
5.1.4 shell指令
- alias:定义命令别名
- bg:将作业(或任务)放到后台运行
- bind:显示或设置键盘配置
- declare:声明shell变量
- dirs:显示shell目录堆栈中的记录
- echo:打印字符串到标准输出
- enable:激活与关闭shell内部命令
- eval:执行指定指令并返回结果
- exec:执行给定指令后退出登录
- exit:退出当前shell
- export:设置与显示环境变量
- fc:编辑并执行历史命令
- fg:将后台任务(或作业)切换到前台运行
- hash:显示与清除指令时运行查询的哈希表
- history:显示与操纵历史命令
- jobs:显示shell的作业信息
- kill:杀死进程或作业
- logout:退出登录shell
- popd:从shell目录堆栈中删除记录
- pushd:向shell目录堆栈中添加记录
- set:设置shell的执行方式
- shopt:设置控制shell行为变量的开关值
- ulimit:设置shell的资源限制
- umask:设置创建文件的权限掩码
- unalias:取消由alias定义的命令别名
- unset:删除定义的变量或函数
5.1.5 打印相关指令
- accept:接受打印请求
- cancel:取消打印任务
- disable:停止打印机
- enable:启动打印机
- lp:打印文件
- lpadmin:配置cups打印机和类
- lpc:控制打印机
- lpq:显示当前打印队列
- lpr:打印文件
- lprm:删除当前打印队列中的作业
- lpstat:显示CUPS的状态信息
- pr:打印前转换文本格式
- reject:拒绝打印请求
5.1.6 其他基础指令
- bc:实现精确计算的计算器
- cal:显示日历
- clear:清屏指令
- consoletype:显示当前使用的终端类型
- ctrlaltdel:设置热键Ctrl+Alt+Del的功能
- date:显示和设置系统日期时间
- dircolors:设置ls指令显示时的颜色
- eject:弹出可移动设备的介质
- halt:关闭计算机
- hostid:显示当前主机的数字标识
- hwclock:查询和设置系统硬件时钟
- info:读取帮助文档
- login:登录系统
- man:显示联机帮助手册
- md5sum:计算并显示文件的md5摘要信息
- mesg:设置终端写权限
- mtools:显示mtools软件包的指令
- mtoolstest:测试并显示mtools工具包的配置
- poweroff:关闭计算机并切断电源
- reboot:重新启动计算机
- shutdown:关闭计算机
- sleep:睡眠指定长的时间
- stat:显示文件或文件系统的状态
- talk:与其他用户交谈
- wall:向所有终端发送信息
- whatis:在数据库中查询关键字
- who:显示当前已登录用户的信息
- whoami:显示当前用户名
- write:向指定用户终端发送信息
- yes:不断输出指定字符串
5.1.7 用户管理
- chfn:改变用户的finger信息
- chsh:改变用户登录时的默认shell
- finger:用户信息查询程序
- gpasswd:管理组文件/etc/group
- groupadd:创建组
- groupdel:删除组
- groupmod:修改组信息
- groups:显示用户所属的组
- grpck:验证组文件/etc/group的完整性
- grpconv:启用组的影子口令文件
- grpunconv:关闭组的影子口令文件
- logname:显示登录用户名
- passwd:设置用户密码
- pwck:验证用户文件密码文件的完整性
- pwconv:启用用户的影子口令文件
- pwunconv:关闭用户的影子口令文件
- su:切换用户
- useradd:创建用户
- userdel:删除用户
- usermod:修改用户的配置信息
- users:显示当前登录系统的用户名
5.1.8 进程管理
- init:进程初始化控制
- killall:根据名称结束进程
- nice:设置进程优先级
- nohup:以忽略挂起信号方式运行程序
- pgrep:基于名字查询并显示进程号
- pidof:查找正在运行程序的进程号
- pkill:向指定的进程发送信号
- ps:显示系统当前的进程状态
- pstree:用树形图显示进程的父子关系
- renice:调整进程优先级
- w:显示当前登录用户的相关信息
- watch:全屏方式显示指定命令的输出信息
5.1.9 磁盘与文件系统管理
- badblocks:磁盘坏块检查工具
- blockdev:从命令行调用块设备的ioctl函数
- chattr:改变文件的第2扩展文件系统属性
- convertquota:转换quota文件格式
- df:报告磁盘剩余空间情况
- dumpe2fs:显示ext2/ext3文件系统信息
- e2fsck:检查ext2/ext3文件系统
- e2image:保存ext2/ext3源数据到文件
- e2label:设置ext2/ext3文件系统标签
- edquota:编辑用户的磁盘空间配额
- fdisk:Linux下的分区工具
- findfs:查找文件系统
- fsck:检查与修复Linux文件系统
- grub:Linux下的引导加载器
- hdparm:调整硬盘I/O性能
- lilo:Linux加载器
- lsattr:显示文件的ext2文件系统属性
- mkbootdisk:为当前系统创建专门的引导软盘
- mke2fs:创建第2扩展文件系统
- mkfs:创建各种文件系统
- mkinitrd:创建初始化ram磁盘映像文件
- mkisofs:创建光盘映像文件
- mknod:创建块设备或字符设备文件
- mkswap:创建交换分区文件系统
- mktemp:创建临时文件
- mount:加载文件系统
- parted:磁盘分区管理工具
- quota:显示用户磁盘配额
- quotacheck:创建、检查和修复配额文件
- quotaoff:关闭文件系统的磁盘配额功能
- quotaon:打开文件系统的磁盘配额功能
- quotastat:显示磁盘配额状态
- repquota:显示文件系统磁盘配额信息报表
- swapoff:关闭交换空间
- swapon:激活交换空间
- sync:强制将缓存数据写入磁盘
- tune2fs:调整ext2/ext3文件系统的参数
- umount:卸载已经加载的文件系统
5.1.10 内核与性能
- depmod:处理内核可加载模块的依赖关系
- dmesg:显示内核的输出信息
- free:显示内存使用情况
- insmod:加载模块到内核
- iostat:报告CPU、I/O设备及分区状态
- ipcs:显示进程间通信的状态信息
- kernelversion:显示内核主版本号
- lsmod:显示已加载的模块
- modinfo:显示内核模块信息
- modprobe:加载内核模块并解决依赖关系
- mpstat:显示进程相关状态信息
- rmmod:从内核中删除模块
- sar:收集、显示和保存系统活动信息
- slabtop:实时显示内核的slab缓存信息
- sysctl:运行时修改内核参数
- tload:监视系统平均负载情况
- top:显示和管理系统进程
- uname:显示系统信息
- uptime:显示系统运行时间及平均负载
- vmstat:显示虚拟内存的状态
5.1.11 X-Window系统
- startx:初始化X-Window会话
- xauth:X系统授权许可文件管理工具
- xhost:显示和配置X服务器的访问权限
- xinit:X-Window系统初始化程序
- xlsatoms:显示X服务器原子数据定义
- xlsclients:显示指定显示器上运行的X程序
- xlsfonts:显示X服务器使用的字体信息
- xset:设置X系统的用户偏爱属性
5.1.12 系统安全
- chroot:以指定根目录运行指令
- nmap:网络探测工具和安全扫描器
- scp:加密的远程复制工具
- sftp:安全文件传输工具
- slogin:加密的远程登录工具
- ssh:加密的远程登录工具
- sudo:以另一个用户身份执行指令
5.1.13 编程相关指令
- awk/gawk:模式扫描与处理语言
- expr:计算表达式的值
- gcc:GNU的C语言编译器
- gdb:GNU调试器
- ldd:显示共享库依赖
- make:工程编译工具
- nm:显示目标文件的符号表
- perl:perl语言的命令行工具
- php:PHP脚本语言命令行接口
- test:条件测试
5.1.14 其他系统管理与维护指令
- arch:显示当前主机的硬件架构
- at:按照时间安排任务的执行
- atq:查询待执行的任务
- atrm:删除待执行的任务
- batch:在指定时间运行任务
- chkconfig:设置系统在不同运行等级下所执行的服务
- crontab:按照时间设置计划任务
- last:显示以前登录过系统的用户相关信息
- lastb:显示登录系统失败的用户相关信息
- logrotate:系统日志的轮循工具
- logsave:将命令的输出信息保存到日志文件
- logwatch:报告和分析系统日志
- lsusb:显示所有的USB设备
- patch:补丁与更新文件
- rpm:Red Hat软件包管理器
- runlevel:显示当前系统的运行等级
- service:Linux服务管理和控制工具
- telinit:切换当前系统的运行等级
- yum:RPM软件包自动化管理工具
5.1.15 网络配置
- dnsdomainname:显示系统的DNS域名
- domainname:显示和设置主机域名
- hostname:显示或者设置系统主机名
- ifcfg:配置网络接口
- ifconfig:配置网络接口的网络参数
- ifdown:关闭指定网络接口
- ifup:启动指定网络接口
- nisdomainname:显示和设置主机域名
- route:显示与操纵本机的IP路由表
- ypdomainname:显示和设置主机域名
5.1.16 网络测试与应用
- arp:管理本机arp缓冲区
- arping:向相邻主机发送ARP请求报文
- arpwatch:监听网络上的ARP信息
- dig:域名查询工具
- elinks:纯文本网页浏览器
- elm:电子邮件客户端程序
- ftp:文件传输协议客户端
- host:DNS域名查询工具
- ipcalc:IP地址计算器
- lynx:纯文本网页浏览器
- mail:电子邮件管理程序
- ncftp:增强的FTP客户端工具
- netstat:显示网络状态
- nslookup:DNS域名查询工具
- pine:电子邮件和新闻组处理程序
- ping:测试到达目标主机的网络是否通畅
- rsh:远程shell
- telnet:远程登录工具
- tftp:简单文件传输协议客户端
- tracepath:追踪数据经过的路由
- traceroute:追踪数据包到达目的主机经过的路由
- wget:从指定URL地址下载文件
5.1.17 高级网络指令
- arptables:管理内核的ARP规则表
- ip:强大的多功能网络配置工具
- iptables:IP包过滤与NAT管理工具
- iptables-save:保存内核中iptables的配置
- iptables-restore:还原iptables的配置信息
- tcpdump:监听网络流量
5.1.18 网络服务器指令
- ab:Web服务器性能测试
- apachectl:Apache HTTP服务器控制接口
- exportfs:管理NFS服务器共享的文件系统
- htdigest:管理用于摘要认证的用户文件
- htpasswd:管理用于基本认证的用户文件
- httpd:Apache超文本传输协议服务器
- mailq:显示待发送的邮件队列
- mysql:MySQL服务器的客户端工具
- mysqladmin:MySQL服务器管理工具
- msqldump:MySQL服务器备份工具
- mysqlimport:MySQL数据库导入工具
- mysqlshow:显示MySQL数据库、表和字段信息
- nfsstat:显示网络文件系统状态
- sendmail:电子邮件传送代理程序
- showmount:显示NFS服务器上的加载信息
- smbclient:samba服务器客户端工具
- smbmount:加载samba文件系统
- smbpasswd:改变samba用户的密码
- squid:HTTP代理服务器程序
- sshd:OpenSSH守护进程