开发人员,必不可少的需要和Linux打交道,这里整理了经常会用到的一些Linux操作指令,能快速帮你熟悉并操作Linux服务器
;
本教程会在后续的使用中持续更新
,最新更新请关注:https://lupf.cn/articles/2020/12/22/1608639406803.html
文件
文件夹操作
查看当前所在目录
代码语言:javascript复制pwd
查看目录下文件
代码语言:javascript复制ls -a
ll # 以列表形式显示目录下文件
打开目录
代码语言:javascript复制cd /user/local #从根目录开始进入到/user/local目录
cd local #从当前目录开始,进入到local目录
cd .. #返回到上级目录
创建文件夹
代码语言:javascript复制mkdir /user/local/user # 从根目录开始,创建/user/local/user,此操作必须/user/local存在
mkdir -p /user/local/user # 创建目录,任何一级的目录不存在,都会创建
删除文件
代码语言:javascript复制rm -ri /test #删除根目录下的test;此操作会引导用户确认;输入y回车删除
rm -rf /test #直接删除,不需要再次确认
移动或修改文件名
代码语言:javascript复制mv /test1 /test2 # 将test1移动到test2 也可以理解为重命名为test2
本地拷贝
代码语言:javascript复制cp -rf /test /user/local # 将根目录下的test拷贝到/user/local
远程拷贝
代码语言:javascript复制scp -rf /test root@192.168.1.123:/user/local
# 将本机根目录下的test目录拷贝到192.168.1.123的/user/local目录下
# root为192.168.1.123的用户名;回车之后需要输入密码
# 如果设置了免密登录,会直接拷贝过去
文件查看
查看前n行内容
代码语言:javascript复制head -n /testfile # n为要查询的行数 如 head -3 /testfile,表示查询testfile的前三行
查看后n行内容
代码语言:javascript复制tail -n /testfile # n 和上面的意思一样
cat输出文件的所有内容
代码语言:javascript复制cat /testfile
查看文件实时更新
代码语言:javascript复制tail -f /testfile # 文件的更新会实时展示出来
输出内容到文件
代码语言:javascript复制echo "输出内容" >> /testfile # 追加内容到文件后面
echo "输出内容" > /testfile # 覆盖原有内容
文件压缩解压
tar.gz
- 解压
tar -zxvf filename.tar.gz
tar.bz2
- 解压
tar -jxvf filename.tar.bz2
tar
- 解压
tar –xvf filename.tar
tar.Z
- 解压
tar –xZvf filename.tar.Z
rar
需要先安装rar
- 解压
unrar e filename.rar
zip
需要先安装zip
- 解压
unzip filename.zip
文件查找
根据名称查找
代码语言:javascript复制find / -name testfile
文件编辑
编辑文件
代码语言:javascript复制vi /testfile # 开始编辑testfile
进入编辑模式
代码语言:javascript复制i
insert
# 按键盘i或者insert会进入编辑模式,左下角会有个--insert--
退出编辑模式
按esc即可退出编辑模式,退出后上图显示的insert会消失
进入命令行模式
代码语言:javascript复制# 非编辑模式下使用shift加:(英文模式下)进入命令行
shift :
关键词查找
代码语言:javascript复制查找文件中的关键词
:/要查找的关键词 #如要查找34
按n会往下查找下一个
按shift n往上查找上一个 n和shift n都是滚动查询的
保存并退出(命令行模式下)
代码语言:javascript复制wq
强制保存并退出(慎用)
代码语言:javascript复制多人同时操作的时候,wq保存会失败,可以使用强制保存
wq!
强制退出放弃修改(慎用)
代码语言:javascript复制q!
文件内复制粘贴
- 终端下
ctrl shift c # 复制
ctrl shift v # 粘贴
服务
查询某个服务的进程
代码语言:javascript复制如查询java
ps -ef | grep java
服务操作;开启、暂停、重启、自启动等
代码语言:javascript复制systemctl start docker.service #启动一个服务
systemctl stop docker.service #关闭一个服务
systemctl restart docker.service # 重启一个服务
systemctl status docker.service # 显示一个服务的状态
systemctl enable docker.service # 在开机时启用一个服务
systemctl disable docker.service # 在开机时禁用一个服务
systemctl is-enabled docker.service # 查看服务是否开机启动
systemctl list-unit-files|grep enabled # 查看已启动的服务列表
systemctl --failed # 查看启动失败的服务列表
杀掉某个进程
代码语言:javascript复制kill -9 进程号 # 如上可以使用kill -9 2336 即可杀掉2336对应的java进程
服务端口查看
- 查看端口监听情况
ss -tnl
- 使用net-tools查看端口
yum install -y net-tools
netstat -tunl | grep ':80'
netstat -tunlp
netstat -apn | grep ':80'
netstat -ntu 查看连接数
netstat -nat|grep -i "80"|wc -l
定时任务
crontab说明
代码语言:javascript复制crontab [-u username]
-e (编辑定时任务)
-l (列出定时任务里的命令)
-r (删除定时任务)
定时任务格式
格式
代码语言:javascript复制* * * * * command
分 时 日 月 周 指令
操作符
- 星
*
取值范围内的所有数字 - 横杠
-
从X到Z
示例
示例1:每1分钟执行一次执行
代码语言:javascript复制* * * * * echo "hello" >> /test/hello.txt
示例2:每小时的第3和第15分钟执行
代码语言:javascript复制3,15 * * * * echo "hello" >> /test/hello.txt
示例3:在上午8点到11点的第3和第15分钟执行
代码语言:javascript复制3,15 8-11 * * * echo "hello" >> /test/hello.txt
示例4:每隔两天的上午8点到11点的第3和第15分钟执行
代码语言:javascript复制3,15 8-11 */2 * * echo "hello" >> /test/hello.txt
示例5:每周一上午8点到11点的第3和第15分钟执行
代码语言:javascript复制3,15 8-11 * * 1 echo "hello" >> /test/hello.txt
示例6:每晚的21:30执行
代码语言:javascript复制30 21 * * * echo "hello" >> /test/hello.txt
示例7:每月1、10、22日的4 : 45执行
代码语言:javascript复制45 4 1,10,22 * * echo "hello" >> /test/hello.txt
示例8:每周六、周日的1 : 10执行
代码语言:javascript复制10 1 * * 6,0 echo "hello" >> /test/hello.txt
示例9:每天18 : 00至23 : 00之间每隔30分钟执行
代码语言:javascript复制0,30 18-23 * * * echo "hello" >> /test/hello.txt
示例10:每星期六的晚上11 : 00 pm执行
代码语言:javascript复制0 23 * * 6 echo "hello" >> /test/hello.txt
示例11:每一小时执行
代码语言:javascript复制* */1 * * * echo "hello" >> /test/hello.txt
示例12:晚上11点到早上7点之间,每隔一小时执行
代码语言:javascript复制* 23-7/1 * * * echo "hello" >> /test/hello.txt
注意事项
- 目录创建 如上示例中,如果出现文件夹的输出,那么文件夹必须存在
- 指令 环境变量中的指令手动执行的时候,可以快捷输入,但定时任务就必须输入全路径
权限
权限定义
代码语言:javascript复制-rw-r--r--. 1 root root 4 Dec 22 18:28 /testfile
[rw-] [r--] [r--]
文件所有者的权限 文件所在组的权限 其他组的权限
用户组操作
代码语言:javascript复制useradd #用于创建用户
groupadd #用于创建组
usermod #用于修改用户属性
权限说明
文件夹
代码语言:javascript复制r # 只能读取文件列表
w # 没有任何作用
x # 可以进入目录
rw # 可以读文件列表,依旧无法删除文件
rx # 读取文件列表,可以cd进mul,但是无法删除目录下的文件,对文件有w权限可以清空或者写入
wx # 可以增加和删除目录中文件,可以cd进目录,但是无法查看目录有哪些内容,知道文件名可以打开文件
rwx # 可以进入目录,显示目录中内容,可以增删目录中文件
文件
代码语言:javascript复制r # 读取文件内容
w # 写入
x # 执行,单独的执行权限只能运行二进制可执行文件
rw # 可读可写
rx # 可以执行二进制之外的编译类或者脚本类的文件
wx # 可以修改内容,无法查看,可以执行二进制可执行文件
rwx # 可以查看文件内容,可以增删文件内容,可以执行可执行文件
数字权限说明
代码语言:javascript复制r : 4
w : 2
x : 1
权限拆解
[-rwxrwxrwx]
[r w x] [r w x] [r w x]
[4 2 1] [4 2 1] [4 2 1] ==> 权限值为:777
[-rwxr-xr--]
[r w x] [r - x] [r - -]
[4 2 1] [4 0 1] [4 0 0] ==> 权限值为:754
设置权限
代码语言:javascript复制chmod 777 /testfile # 其中777为根据上面的数字权限方式计算出来的
机器相关
cpu
查看CPU个数
- 查看物理CPU的个数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
查看CPU核数
代码语言:javascript复制cat /proc/cpuinfo | grep "cpu cores" | uniq
查看CPU型号
代码语言:javascript复制cat /proc/cpuinfo | grep 'model name' |uniq
查看CPU的主频
代码语言:javascript复制cat /proc/cpuinfo |grep MHz|uniq
查看CentOS版本
代码语言:javascript复制cat /etc/redhat-release
查看操作系统内核版本
代码语言:javascript复制cat /proc/version
查看bios信息
代码语言:javascript复制dmidecode -t bios
内存
查看内存总数
代码语言:javascript复制cat /proc/meminfo | grep MemTotal
查看内存条数
代码语言:javascript复制dmidecode | grep -A16 "Memory Device$"
磁盘
查看硬盘大小
代码语言:javascript复制fdisk -l | grep Disk
查看磁盘占用
- 查看整个磁盘占用全款
df -h
- 按空间占用排序
du -s * | sort -nr | head 选出排在前面的10个
du -s * | sort -nr | tail 选出排在后面的10个
网卡
查看网卡硬件信息
代码语言:javascript复制lspci | grep -i 'eth'
查看系统的所有网络接口
代码语言:javascript复制ip addr
时间
查看时间
代码语言:javascript复制date
更新时间
代码语言:javascript复制# 安装ntpdate
yum install -y ntpdate
# 更新时间
ntpdate 0.asia.pool.ntp.org
# 将系统时间同步到硬件,防止系统重启后时间被还原
hwclock --systohc
其他更多操作
以下命令也是比较常用的,可根据需要使用
代码语言:javascript复制uname -a # 查看内核/操作系统/CPU信息的linux系统信息
head -n l /etc/issue # 查看操作系统版本
cat /proc/cpuinfo # 查看CPU信息
hostname # 查看计算机名的linux系统信息命令
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备的linux系统信息命令
lsmod # 列出加载的内核模块
env # 查看环境变量资源
free -m # 查看内存使用量和交换区使用量
df -h # 查看各分区使用情况
du -sh # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载磁盘和分区
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况网络
ifconfig # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息进程
ps -ef # 查看所有进程
top # 实时显示进程状态用户
w # 查看活动用户
id # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务服务
chkconfig –list # 列出所有系统服务
chkconfig –list | grep on # 列出所有启动的系统服务程序
rpm -qa # 查看所有安装的软件包
cat /proc/cpuinfo # 查看CPU相关参数的linux系统命令
cat /proc/partitions # 查看linux硬盘和分区信息的系统信息命令
cat /proc/meminfo # 查看linux系统内存信息的linux系统命令
cat /proc/version # 查看版本,类似uname -r
cat /proc/ioports # 查看设备io端口
cat /proc/interrupts # 查看中断
cat /proc/pci # 查看pci设备的信息
cat /proc/swaps # 查看所有swap分区的信息
部分内容参考于: dwz-9.cn/0S8fS