常用命令
1. 基本命令
ctrl + r #搜索最近一次匹配的命令
man + command ,info + command ,command + --help # 帮助
uname -a # 查看系统信息
| # 管道 a|b a输出 b输入
1.0 进程 ps jobs kill
ps -ef # 查看进程 e:所有 f:全格式
ps -au # 用户所有的进程
pstree # 以树状图方式显示进程之间的关系 可选参数-p(显示PID)
Ctrl+z # 强制挂起
Ctrl+c # 强制关闭
jobs # 显示任务列表 以及睡眠的任务
fg nums(jobs id) # 调用到前台执行
bg nums(jobs id) # 后台执行 另外的terminal来kill
kill -9 PID # 杀死该进程
1.1 ls 命令
ls -a # 获取所有文件以及其父目录
ls -l # list
ls -h # 以可读的方式读取文件大小
ll # 等同于ls
~ # 当前用户home目录
1.2 date 命令
date # 查看系统时间
date +"%Y-%m-%s %H:%M:%S" # format时间
date -s "2018-09-30 00:00:00" # 设置时间,需要su
hwclock -s # 保存时间到硬件
tzselect # 仅仅选择时区
1.3 grep 文本搜索工具
grep # 过滤,文本搜索工具
-i # 忽略大小写
-n # 输出行号
-v # 反向选择,不匹配字符串
--color # 高亮显示匹配项
1.4 shutdown 命令
shutdown -h +10 # 10分钟后关机 其他可选参数:now 立即关机, 00:00零点关机
shutdown -r now # 立即重启 同上
halt # 立即关机
reboot # 重启
init 0 # 关机
init 6 # 重启
init 3 # 命令行界面
init 5 # 图形化界面
1.5 who 命令
who # 谁登录了服务器
whoami # 我是谁
last -n # 最后n条登录记录
2. 文件命令
2.1 > 输入输出重定向
mkdir -p # 会创建不存在的父目录
mkdir test # 默认为在当前目录下创建 同ls
touch filename file2 file3 # 同时创建多个文件 空格分开 可选参数-p同上
echo str > 1.txt # 覆盖写入
echo str >> 1.txt # 追加写入,创建文件
ll /home > 1.log # 输出写入1.log 输出重定向
echo "123" | passwd --stdin root # 修改密码,不进行交互
cat > 2.log < 1.log # 将1.log导入到2.log <:输入重定向
>>EOF # 以EOF结束,区分大小写,等同Ctrl+D
cat > 3.log <<EOF # 输入,以EOF结束
cat 1.log 2.log >> 3.log # 多输入
2.2 cp mv rename 文件和目录的操作
cp 2.log 1.log /home # 拷贝多个文件,可以用来重命名
cp -r /a/b/c /a/v # 递归复制文件夹 r(recursive)
mv # 同上
mv ../test /root/test.bak
rename .repo .repo.bak ./* # 匹配当前目录中所有文件 将.repo后缀改为.repo.bak, 同理可以去掉后缀
2.3 vi 或vim 文件的编辑
#一般模式下
dd:删除当前光标所在行
ndd:从光标所在行开始删除n行
dG:从光标所在出删除到文件末尾
x:删除光标位置字符
nx:同上
D:删除到光标尾
r:替换光标所在字符
R:从光标所在处替换
u:撤销上一步
Ctrl+r 返回到撤销前
yy:复制一行
nyy:复制n行
p:粘贴
gg:定位到首行
G:定位到尾行
#编辑模式
i:光标前一位置输入
I:光标所在行行首输入
a:光标后一位置输入
A:行尾输入
o:换行输入
O:上一行输入
#底行模式
:set nu 设置行号
:set nonu 取消行号
:n 定位到n行
可以用:pwd :cd
:w 保存
:q 退出(!强制退出)
:wq! 强制保存退出
#find
/bin (从光标所在处)查找文件bin,并定位到第一个位置,继续向下用n,N向上查找
replace
:s/sbin/gg123 查找光标所在行的第一个sbin并替换为gg123
:s/sbin/gg123/g 查找光标所在行的所有sbin并替换为gg123
:%s/sbin/gg123/g 查找文件中所有的sbin并替换为gg123
#块模式
v 进入字符选择模式
shift + v 进入行选择模式
ctrl + v 块选择模式
y 复制
p 粘贴
2.4 more tail head 文件的查看
cat # 略
head # 默认取前10行 可选参数 -n 取文件前n行
tail # 从文件尾读 同上
more # 分页查看 可选参数 -b回看 -q退出
less # 支持搜索
tail -f # 监控文件 - 文件改名,移动,tail将失去对这个文件的监控
tail -F # 监控的是文件名 - 文件不存在也能监控 ping xxx >> x.txt 监控x.txt 文件名更改后,尝试reopen
df -i # 查看分区的inode节点
ls -i file # 查看文件的inode号
磁盘上最小单位是512Bytes(字节)
操作系统在磁盘上的最小单位:block(块),一块8扇区,大概4K
系统存文件数据两种:元数据和数据块,
同样磁盘存储也在系统格式化的时候被分为两部分:元数据,数据块
元数据:时间,用户,组,权限块信息。。。
stat name # 查看文件的元数据信息(inode)
inode 的大小
iNode也会消耗磁盘空间 格式化磁盘的时候,会分为,数据区,inode区,存放inode包含的信息
inode节点的大小一般是128或是256字节
inode节点总数在格式化时就固定
2.5 locate find 文件的查找
which # 从环境变量中查找,命令所在位置
whereis # 一般用来查找安装的软件的位置
find # 查找速度慢 类似于win search
find /root /home/ -name "*.txt" # 从制定的文件下查找
find /root /home/ -name "*.txt" -ok -exec rm {} \;
locate name # 从linux文件数据库中查找某文件,配合updatedb使用
2.6 gzip tar 压缩解压
gzip -name # 用来压缩文件,后缀.gz,不保留源文件,不能压缩目录,多文件操作,可与tar组合
gunzip -name # 解压文件
bzip2 -name # 扩展名.bz2
bunzip2 -name # 解压 同gzip
tar # 打包 可以多文件或目录放在一起
# 可选参数:
-c 打包
-x 解包
-v 显示信息
-f 指定文件
-C 重定向
-z gzip形式 压缩或解压 "*.tar.gz"
tar -cvf test.tar 222.log aaaaa/ cls.avi # 打包多个文件以及文件夹
tar -xvf test.tar -C /home # 解包重定向至/home
# 同理 打包并压缩 改为 -zcvf -zxvf 以及.gz
2.7 user group 用户与组操作
useradd (-command) usrname # 创建普通用户 所有用户必须放在组内,如果不创建组,则系统默认创建用户id相同的组id,默认都由系统分配
# 普通用户id>=500 root 0,系统用户1-499
# 可用参数
-u # 指定uid
-g # 指定基本组
-G # 指定附加组 一人对多组
useradd -u 666 -g 502 -501 usrname # /etc/passwd(用户info) /etc/group(组info) /etc/shadow(密码) /etc/gshadow(组密码)
passwd usrname # 增加密码
usermod # user modify
# 可选参数
-g usrname # 更改usr group id
-u, -G # 同上
userdel -r usrname # 删除普通用户 参数:-r同时删除其家目录
groupadd groupname # 组操作等同上
2.8 chmod ln 文件的权限(r,w,x-读写执行)以及链接
chmod -R 777 # r:4 w:2 x:1
chmod ugo+rwx -R # 表示递归修改权限u usr g group o other
chown -R user:root dirs # 修改所属用户和所属组
# 链接
1.硬链接:只能是文件到文件 或是文件到目录下 不能目录到目录
ln a.log b.log # 两文件内容同步
2.符号链接:软链接
ln -s /home/a.log /home/data/b.log # 文件目录均可,需要写绝对目录
# 同是复制,但是只有一个link
-|rw-|---|---. 1 root root 1771 4月28 2015 anaconda-ks.cfg
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨
①:文件类型
- 文件
d 目录
l 链接
②:所有者权限(u) 6
r 读 4
w 写 2
x 执行 1
③:所属组权限(g) 5
r 读 4
w 写 2
x 执行 1
④:其他用户权限(o) 0
r 读 4
w 写 2
x 执行 1
⑤:所有者
⑥:所属组
⑦:文件大小
⑧:最后修改时间
⑨:文件名
3.磁盘操作
3.0 sudo 权限配置
vi /etc/sudoers
## Allow root to run any commands anywhere
98 root ALL=(ALL) ALL
99 user2 ALL=(ALL) ALL #将user名加入此处
108 ## Same thing without a password
109 # %wheel ALL=(ALL) NOPASSWD: ALL
110 user2 ALL=(ALL) NOPASSWD: ALL # 更改nopasswd
3.1 fdisk mount 磁盘U盘操作
du -sh dir # 查看目录所占空间大小
df -h # 显示磁盘分区使用情况
mkfs.ext4 /dev/sda1 # 格式ext4格式化 sda1
fdisk -l # 显示磁盘分区列表
1磁盘大小 = 1柱面大小 * 柱面总数
1柱面大小 = 磁头数量 * 1磁道上的扇区数 * 1扇区大小
fdisk /dev/sda # 磁盘分区(格式化分区)
mount -t 文件系统类型 -o 挂接方式 设备 挂载点
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
iocharset:指定访问文件系统所用字符集
#3.device 要挂接(mount)的设备。
#4.dir设备在系统上的挂接点(mount point)。
# 将镜像文件挂载在/mnt/dvd下
mkdir /mnt/dvd # 在根目录下的mnt目录下创建目录dvd
mount -t iso9660 -o loop /dev/cdrom /mnt/dvd # 挂载
umount /mnt/dvd # 卸载
以上是临时挂载
永久挂载需要改变文件
vi etc/fstab
源目录 挂载点 类 型
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
#/dev/cdrom /mnt/dvd iso9660 defaults,loop 0 0
3.2 IP等 系统服务管理
service --status-all
service sshd stop # 可选参数 start stop status restart
service sshd status
chkconfig --list # 查看系统的开机自启服务
chkconfig iptables off # 关闭防火墙开机自启
vi /etc/initab # 对应123456
hostname + 主机名 # 临时修改当前session有效
vi /etc/sysconfig/network # 永久修改
vi /etc/sysconfig/network-scripts/ifcfg-eth0 # 网卡设置
DEVICE=eth0
HARDWARE=/etc/udev/rules.d/70-persistent-net.rules 中的MAC地址
ONBOOT=yes # 开机启动网卡
BOOTPROTO=static # 静态ip DHCP动态
IPADDR=192.168.128.3 # ip
GATEWAY=192.168.128.2 # 网关
NETMASK=255.255.255.0 # 子网掩码
DNS=8.8.8.8 # google DNS
service network restart # 配置完重启
3.3 软件的安装
3.3.1 二进制的安装
优点:安装简单
缺点:平台局限
解压 tar -zxvf xxxx.tar.gz -C /user/local
配置环境变量 vi /etc/profile export
source /etc/profile
3.3.2 rpm 安装
rpm # 缺点:需要自己安装依赖
# 可选参数
-i # install 安装
-v # verbose 显示详细信心
-h # hash 显示进度
# 卸载eg: rpm -e --nodeps xxxxx
rpm -e 包名 # 卸载软件 erase,抹除,擦掉
--nodeps # 可选参数 不检查依赖性
# 查询eg: rpm -qa | grep -i mysql
-q query
-a all
-U upgrade # 升级
-h hash # 显示进度
3.3.3 yum 网络安装
yum安装本质上就是rpm安装,但是会自动解决依赖问题
yum的源配置文件在/etc/yum.repos.d下,以.repo结尾
yum -y install xxx # -y 同意所有
yum list # 查看可用安装包以及已安装软件
yum list | grep mysql # grep筛选
yum list installed # 查看已安装包
yum info + 软件名 # 查看安装包信息
yum -y install mysql php # 同时安装多个 卸载相同
yum -y remove xxx xxx # 同上
3.3.4 yum 本地软件仓
1.准备软件包
# 镜像文件挂载的,挂载到了某一个目录下(永久挂载)
2.配置配置文件
1)rename .repo .repo.back # 将原有配置文件的失效
2)拷贝出一个.repo,然后自己编辑 如下
3)配置 路径(file:///mnt/centos),enabled=1
## 详见下
3.3.5 yum 局域网软件仓
yum clean all # 清空yum源缓存
yum repolist # 列举软件仓库信息
配置局域网yum源
1.准备软件包 # 永久挂载(CentOS.iso) 到 /mnt/centos
2.安装httpd服务,需要在下一步前安装 然后service httpd start 开启服务
3.ln -s /mnt/centos /var/www/html
4.rename .repo .repo.bak ./* # cd /etc/yum.repos.d
5.配置服务器端路径路径(file://mnt/centos),enabled=1;
6.关闭防火墙 客户端更改.repo,同上 客户端路径(http://ip/centos),enabled=1