Linux - 常用命令
Linux系统文件结构
/bin:
bin是Binary的缩写, 这个目录存放着最经常使用的命令。
/boot:
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :
dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:
这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:
用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:
这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt:
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:
这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:
该目录存放一些服务启动之后需要提取的数据。
/sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
/tmp:
这个目录是用来存放一些临时文件的。
/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:
系统用户使用的应用程序。
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
基本命令
开关机命令
reboot 命令用于重启机器
poweroff 用于关闭系统
获取IP地址
ip addr
ifconfig
ssh远程连接
ssh 用户名@ip
ssh -p 端口 用户名@ip
用户
创建普通用户
useradd 用户名
更改用户密码
passwd 用户名
切换用户
root切换普通用户不需要密码,普通用户之间切换需要密码
su - 用户名
# -代表用户环境变量完全切换
查看linux用户的id信息
id 用户名
查看存放用户信息的文件
/etc/passwd
删除用户
userdel -rf 用户名
管理员权限 sudo命令
配置sudo命令
用visudo命令,打开配置文件,添加如下配置
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
用户名 ALL=(ALL) ALL
在要执行的命令前添加sudo执行命令
权限
文件的权限分三类人
user 属主
group 属组
other 其他人
一个文件有三种权限,读、写、可执行
r read 读 4
w write 写 2
x exec 可执行 1
查看一个文件的权限信息
ls -l
-rw-r--r--. 1 root root 0 Oct 27 16:36 1.txt
rw- :属主权限
r-- :属组权限
r-- :其他人权限
root :创建者
root :用户组
0 Oct 27 16:36 : 修改时间
1.txt : 文件名
修改文件权限
chmod u/g/o+r/w/x filename
chmod u/g/o-/w/x filename
修改文件属主
chown 用户 filename
修改文件属组
chgrp 属组 filename
将用户加入某个组
usermod -G 组名 用户名
软连接,快捷方式
ln -s 源文件绝对路径 快捷方式绝对路径
目录相关
目录符号
符号 | 描述 |
---|---|
. | 当前目录 |
… | 上一级目录 |
- | 上一次工作目录 |
~ | 当前用户的家目录 |
/ | 根目录 |
目录操作
查看当前目录下所有文件内容
ls
查看隐藏文件
ls -a
以列表方式显示文件的详细信息
ls -l
以列表方式显示人性化的文件详细信息
ls -lh
查看当前所在目录
pwd
切换文件夹
cd /opt/first
创建目录
mkdir a
递归创建目录
mkdir -p a/b/c
删除空目录
rmdir a
强制删除
rm -rf
文件相关
创建文件,如果文件不存在,创建文件
linux中文件的后缀没有意义,只是提示作用
touch 1.txt
删除指定文件
rm 1.txt
查看文件内容
全部查看
cat 1.txt
显示行号
cat -n 1.txt
在每行结尾显示$符
cat -E 1.txt
追加文字到文件
cat >> /opt/1.txt << EOF
11
22
EOF
more:用于查看内容较多的文本,more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容
more 1.txt
空格翻页,b键上一页,回车向下读取内容
head、tail
head
显示文件前几行,默认为10
head -2 1.txt
tail
显示文件后几行,默认为10
tail -2 1.txt
chattr
给文件上锁、只能写入无法删除
chattr +a 1.txt
chattr -a 1.txt
lsattr
查看文件隐藏属性
lsattr 1.txt
chattr
设置文件特殊权限的命令
vim
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。
简单使用
1、使用vi或vim打开文件弹出命令模式
vim 1.txt
2、在命令模式中输入a或i进入编辑模式
3、编辑结束后按esc返回命令模式
4、在命令模式中输入wq!保存退出
命令模式操作
:q! 强制退出
:wq! 强制写入退出
:set nu 显示行号
:数字 跳转到数字行
:! command 暂时离开vim指令模式,执行command的结果
例如 :!ip a 临时看一下ip信息,然后可以回到vim
:set nu 显示vim行号
:set nonu 取消行号
随时按下esc可以退出底线命令模式
移动光标
w 移动到下一个单词
b 移动到上一个单词
0 移动到本行开头
$ 移动到本行结尾
H 移动到屏幕首行
M 移动到屏幕中间一行
L 移动到屏幕尾行
gg 移动到文档首行
G 移动到文档尾行
ctrl + f 下一页
ctrl + b 上一页
. 移动到上一次修改行
按键移动
h 或 向左箭头键(←) 光标向左移动一个字符
j 或 向下箭头键(↓) 光标向下移动一个字符
k 或 向上箭头键(↑) 光标向上移动一个字符
l 或 向右箭头键(→) 光标向右移动一个字符
向下移动5行 5j
向右移动10字符 10l
查找
/chaoge 在整篇文档中搜索chaoge字符串向下查找
?chaoge 在整篇文档中搜索chaoge字符串向上查找
* 查找整个文档、匹配光标所在的所有单词,n查找下一处N查找上一处
# 查找整个文档、匹配光标所在的所有单词,按下n查找下一处,N上一处
gd 找到光标所在单词匹配的单词,并停留在飞注释的第一个匹配上
% 找到括号另一半
复制、删除、黏贴
yy 拷贝光标所在行
dd 删除光标所在行
D 删除当前光标到行尾的内容
dG 删除当前行到文档尾部的内容
p 粘贴yy所复制的内容
x 删除光标所在的字符
u 撤销上一步的操作
3yy 拷贝光标所在的3行
5dd 删除光标所在5行
tar
参数:
-z 调用gzip压缩
-x 解包
-c 打包
-v 显示过程
-f 必须写参数结尾,指定tar包的名字
打包
tar -cvf 压缩文件名.tar 被压缩文件
解包
tar -xvf 压缩文件名.tar 解包路径
压缩
tar -zcvf 压缩文件名.tar.gz 被压缩文件
解压
tar -zxvf 压缩文件名.tar.gz 解压路径
查看环境变量
echo $PATH
Linux中的环境变量由目录组成,由:分割
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
时间
date
显示当前时间和设置系统时间
-d --date=string 显示指定的时间,而不是当前时间
以年-月-日显示当前时间
date +"%Y-%m-%d"
以年-月-日 时分秒 显示当前时间
date +"%Y-%m-%d %T"
在Linux下系统时间和硬件时间不会自动同步,在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。
硬件时间的运行,是靠Bios电池来运行,而系统时间是用CPU tick来维持的。
在系统开机时候,会从Bios中获取硬件时间,设置为系统时间
硬件始终的查看
[root@izhk773c62kz06z ~ 10:19:04]#hwclock
2018年08月27日 星期一 10时23分03秒 -0.528004 秒
同步系统时间和硬件时间,可以用hwclock命令
//以系统时间为基准,修改硬件时间
[root@izhk773c62kz06z ~ 10:29:07]#hwclock -w
//以硬件时间为基准,修改系统时间
[root@izhk773c62kz06z ~ 10:29:21]#hwclock -s
cal
日历命令
[root@VM_0_16_centos first]# cal
November 2019
Su Mo Tu We Th Fr Sa
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
ntp
关于时间服务器的配置文件,有如下几种
/bin/date 用于 Linux 时间 (软件时钟) 的修改与显示的指令;
/sbin/hwclock 用于 BIOS 时钟 (硬件时钟) 的修改与显示的指令。 这是一个 root 才能执行的指令,因为 Linux 系统
上面 BIOS 时间与 Linux 系统时间是分开的,所以使用 date 这个指令调整了时间之后,还需要使用 hwclock 才能将修改过
后的时间写入 BIOS 当中!
/usr/sbin/ntpd: 主要提供 NTP 服务的程序啰!配置文件为 /etc/ntp.conf
/usr/sbin/ntpdate: 用于客户端的时间校正,如果你没有要启用 NTP 而仅想要使用 NTP Client 功能的话,那么只会
用到这个指令而已!
只用作客户端更新时间
ntpdate -u ntp.aliyun.com
wget
命令用于在终端下载网络文件
wget [参数] 下载地址
wget -r -p http://www.baidu.com
echo
echo命令用于在终端输出字符串或变量提取后的值,格式是“echo 【字符串|$变量】
默认将内容打印
echo "xxx"
打印PATH的值
echo $PATH
其他特殊符号
>> 追加文字到文件
> 覆盖文字到文件
< 输入
<< 将输入结果输入
echo "x" > 1.txt
echo "xx" >> 1.txt
echo >> 1.txt << EOF
复制、移动、删除
复制
复制
cp xx.txt first
复制后改名
cp xx.txt first/x1.txt
递归复制
cp -r
保持文件属性不变
cp -p
移动
mv 1.txt /tmp
删除
rm 1.txt
rm -i 删除时需要确认
rm -f 强制删除
rm -r 递归删除
查找
完整格式
find 目录 类型 名字 参数
按名字查找
find -name 1.txt
按类型查找
find -type f
按类型查找参数:
b 块设备文件
d 目录
c 字符设备文件
p 管道文件
i 符号链接文件
f 普通文件
s socket文件
通配符
以什么结尾
find -name "*.txt"
以什么开头
find -name "s*"
管道命令
Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
ls /opt|find -name "*txt"
grep
(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
语法:
grep [参数] [--color=auto] [字符串] filename
参数:
i 忽略大小写
n 输出行号
v 反选
color = auto 给关键词添加颜色
cat /etc/passwd |grep '^root' --color=auto -n
别名
查看系统别名
alias
设置别名
alias rm = "xxxxx"
取消别名
unalias rm
which
命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
指令会在环境变量$PATH设置的目录里查找符合条件的文件。
which ls
scp
scp命令用于Linux之间复制文件和目录。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
语法:
scp 【可选参数】 本地源文件 远程文件标记
参数:
-r 递归复制
-v 详细方式输出
-q 不显示传输进度条
-c 允许压缩
scp 本地文件 远程用户名@远程ip:远程文件夹/远程文件名
du
du会显示指定的目录或文件所占用的磁盘空间。
语法:
du 【参数】【文件或目录】
参数:
-s 显示总计
-h 以k、M、G为单位显示
du -sh /home
top
命令用于动态地监视进程活动与系统负载等信息
第一行 (uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
第二行:进程信息
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
第三行:cpu信息
1.5 us:用户空间所占CPU百分比
0.9 sy:内核空间占用CPU百分比
0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
97.5 id:空闲CPU百分比
0.2 wa:等待输入输出的CPU时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比
第四行:内存信息(与第五行的信息类似与free命令)
total:物理内存总量
used:已使用的内存总量
free:空闲的内存总量(free+used=total)
buffers:用作内核缓存的内存量
第五行:swap信息
total:交换分区总量
used:已使用的交换分区总量
free:空闲交换区总量
cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入
清屏
clear
whoami
whoami 查看当前目录
主机名
hostname 查看主机名
set-hostname 新的主机名
yum
在linux下安装各种软件
yum install vim -y #安装vim软件,且自动输入yes
更新yum
yum update
tail
tail -f filename #持续刷新文件内容的变化
进程
查看进程
ps aux 或者 ps -ef #查看机器所有进程信息
ps aux | grep "vim" #过滤出和vim有关的进程
杀死进程
kill -9 进程id
pkill -9 进程名
查看内存信息
free
查看磁盘信息
fdisk
磁盘使用率
df
查看网络端口
netstat -tunlp
参数:
netstat [选项]
-t或--tcp:显示TCP传输协议的连线状况;
-u或--udp:显示UDP传输协议的连线状况;
-n或--numeric:直接使用ip地址,而不通过域名服务器;
-l或--listening:显示监控中的服务器的Socket;
-p或--programs:显示正在使用Socket的程序识别码和程序名称;
-a或--all:显示所有连线中的Socket;
防火墙
关闭防火墙的命令
systemctl stop firewalld #停止防火墙服务
systemctl disable firewalld #停止防火墙开机自启
iptables -F #清空防火墙规则
定时任务
检查定时任务列表
crontab -l
设置定时任务
crontab -e
分 时 日 月 周 执行命令的绝对路径
* * * * * /usr/bin/echo "111"
yum源
centos的默认yum仓库路径是 /etc/yum.repos.d ,在这目录下,第一层文件夹中的repo文件会识别为仓库文件
配置yum源
1.获取阿里云的yum源
打开网址https://opsx.alibaba.com/mirror
2.找到第一个仓库
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3.下载第二个仓库
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
4.生成yum缓存,加速以后下载
yum makecache
SimpleHTTPServer
python -m SimpleHTTPServer 8090