Linux-常见问题及实用技巧(持续更新)

虚拟机安装linux提示intel VT-x处于禁用状态

问题描述

我们在第一次使用虚拟机启动linux的时候经常会碰到下面这个报错,如下:

已将该虚拟机配置为使用 64 位客户机操作系统。但是,无法执行 64 位操作。

此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态。

如果已在 BIOS/固件设置中禁用 Intel VT-x,或主机自更改此设置后从未重新启动,则 Intel VT-x 可能被禁用。

  1. 确认 BIOS/固件设置中启用了 Intel VT-x 并禁用了“可信执行”。

  2. 如果这两项 BIOS/固件设置有一项已更改,请重新启动主机。

  3. 如果您在安装 VMware Workstation 之后从未重新启动主机,请重新启动。

  4. 将主机的 BIOS/固件更新至最新版本。

intel VT-x处于禁用状态

解决办法

重启电脑,进入bios(一般是F10),选择Configuration选项,选择Intel Virtual Technology并回车 ,选择enable. 保存退出OK。

nginx日志文件删除后空间不释放

问题描述

因nginx日志过大,占满存储空间,想删除日志减少空间,但是删除日志后发现空间还是没有减少。

未释放磁盘空间原因

在Linux或者Unix系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink)。然而如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。而我删除的是nginx的log文件,删除的时候文件应该正在被使用。

解决办法

重启nginx服务,或者用>/opt/nginx/logs/nginx.log清空日志文件,而不是直接删除。

给指定用户或全部用户(已登录)发送消息

给指定用户发送消息

首先,可使用wwho命令查看当前登录的用户信息;

然后,使用write命令将信息发送到用户的终端上,用法步骤如下:

  1. write + shh登陆用户名+ttyname(例如pts/1)

  2. ENTER

  3. 输入信息(所要发送的消息,中文可能会乱码)。

  4. EOF

  5. CTRL+D

  6. 结束

实例:

1
2
3
root# write root pts/1
I'll come by at 12:00 to look at your problem.
root#

然后使用root账号登录,且tty号为pts/1的登录用户终端会收到如下消息:

1
2
3
Message from root@cs2c.com.cn on pts/3 at 10:20 ...
I'll come by at 12:00 to look at you problem.
EOF

给当前登录的所有用户发送消息

给当前登录所有用户发送消息,使用wallwrite all的缩写)

实例如下:

首先,你可以通过who命令查看登录到该机器的所有用户。比如:

1
2
3
4
5
# who
root pts/0 Sep 13 04:28 (10.56.226.25)
root pts/1 Sep 13 22:32 (10.140.1.37)
root pts/2 Sep 13 23:31 (10.140.2.70)
root pts/3 Sep 13 23:56 (10.140.2.70)

执行who命令,就会返回上面的结果。表示有三个用户登录到该机器,有个用户有两个登录Console

其次,广播消息

1
2
3
#wall 'I will use this host. If somebody is using it, pls let me know. Thanks a lot.'
Broadcast message from root (pts/3) (Fri Jun 13 23:57:13 2008):
I will use this host. If somebody is using it, pls let me know. Thanks a lot

执行wall命令,所有登录到该机器的控制台(console)界面上都会收到如上所示的消息。

LINUX系统软件安装和卸载的常见方法

  1. rpm包卸载:rpm -e XXX.rpm (如果想忽略依赖,可加上–nodeps)。

  2. yum remove xxx.rpm 这种方法非常不建议使用,卸载过程会将待卸载的软件包所依赖的软件包一并卸载掉,很容易造成系统缺少某些包而崩溃等问题。

  3. 源码包卸载:cd命令进入编译后的软件目录,即安装时的目录,执行make uninstall命令即可;或者直接删除安装目录。

如何修改LINUX的IP地址、网关和主机名

1、修改IP地址、网关:编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改里面IPADDRGATEWAY内容,没有这两行,则添加即可,添加时确保BOOTPROTO=static,静态地址,如IPADDR=192.168.1.100 GATEWAY=192.168.1.1

2、修改主机名称:编辑/etc/sysconfig/network,修改里面的HOSTNAME内容,如设置主机名称为mysql,则:HOSTNAME=mysql即可;

如何查看当前的Linux服务器的运行级别

使用 who -r 或者 runlevel 命令。

如何查看Linux的默认网关

route -n 或者 netstat -nr 命令。

如何在/usr目录下找出大小超过10MB的文件

find /usr -size +10M

如何在/home目录下找出120天之前被修改过的文件

find /home -mtime +120

如何在/var目录下找出90天之内未被访问过的文件

find /var \! -atime -90

查看各系统用户的进程(LWP)数

1
ps h -Led -o user | sort | uniq -c | sort -n

查看各系统用户的进程(LWP)数

默认情况下采用 ps 命令并不能显示出所有的进程。因为 Linux 环境下执行多线程,每个线程都将以一个轻量级进程(light-weight process 『LWP』)的形式执行,而 ps 命令如果不带 -L 选项将无法查看 LWP。

确定某用户的进程(LWP)数的分布情况

1
ps -o nlwp,pid,lwp,args -u username | sort -n

确定某用户的进程(LWP)数的分布情况

其中 username 为系统用户名。

常用日志查询命令

查看实时日志

1
tail -f info.log

分页查看所有日志

1
cat info.log | more

分页查看前N行日志

1
tail -n 1000 info.log | more

检索日志,并显示该日志的前后N行记录

1
cat info.log | grep -n -B10 -A10 "关键字"

查看日志,从第1000行开始,显示500行

1
cat info.log |tail -n+1000|head -n 500

查看日志,显示1350行到1400行

1
cat info.log | head -n 1400 | tail -n +1350

删除包括关键词的行

1
sed -i '/关键词/d' info.log

grep查看打印匹配的下几行或前后几行

前言

平时工作中总会碰到排查错误想要看XX日志里面的某个关键词,但是这个关键词前后又有很多其他信息也是需要关注的,这时候怎么办呢?

实现

一般是通过grep来实现。假设要看A.log里面“ABC”关键词上下100行,一般执行命令:

1
grep -C 100 'ABC' A.log

将信息输出到指定文件:

1
grep -C 100 'ABC' A.log > /opt/error.log

想匹配模式的上下几行,grep也可以实现

1
2
3
4
5
6
7
grep -5 'parttern' inputfile //打印匹配行的前后5行

grep -C 5 'parttern' inputfile //打印匹配行的前后5行

grep -A 5 'parttern' inputfile //打印匹配行的后5行

grep -B 5 'parttern' inputfile //打印匹配行的前5行

查找最后创建时间是3天前,后缀是*.log的文件并删除

1
find / -name “*.log” -ctime +3 -exec rm -f {} \

将某目录下大于100k的文件移动至/tmp下

1
for i in `find /test -type f -size +100k`;do cd /test && mv $i /tmp;done

将数据库备份并打包至远程服务器192.168.1.1 /backup目录下

1
2
3
4
5
6
7
8
9
mount 192.168.1.1:/backup /mnt

cd /mnt

/usr/local/mysql/bin/mysqldump -hlocalhost -uroot test >test.sql

tar czf test.sql.tar.gz test.sql

rm -f test.sql

防火墙配置脚本,只允许远程主机访问本机的80端口

1
2
3
4
5
6
7
8
9
10
11
12
13
iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -F

iptables -X

iptables -A INPUT -i eth0 -p tcp –dport 80 -j ACCEPT

iptables -P INPUT DROP

脚本统计nginx日志,得到访问ip最多的前10个(nginx日志路径:/home/logs/nginx/default/access.log

1
awk ‘{a[$1]++}END{for (j in a) print a[j],j}’ /home/logs/nginx/default/access.log|sort -nr|head -10

查看最消耗CPU、内存的进程

CPU占用最多的前10个进程

1
ps auxw|head -1;ps auxw|sort -rn -k3|head -10

内存消耗最多的前10个进程

1
ps auxw|head -1;ps auxw|sort -rn -k4|head -10

虚拟内存使用最多的前10个进程

1
ps auxw|head -1;ps auxw|sort -rn -k5|head -10

参数说明

ps auxw

u:以用户为主的格式来显示程序状况
x:显示所有程序,不以终端机来区分
w:采用宽阔的格式来显示程序状况


ps auxw|head -1

输出表头


sort -rn -k5

-n是按照数字大小排序,-r是以相反顺序,-k是指定需要排序的栏位

linux磁盘空间满了后怎么去判定哪个地方占了多大的空间并回收

  1. 使用df -h查看磁盘空间占用情况。

  2. 使用du -s /* | sort -nr命令查看那个目录占用空间大。

  3. 然后那个目录占用多再通过du -s /root/* | sort -nr 一层层排查,找到占用文件多的地方。

  4. 使用du -h –max-depth=1查看当前目录下文件夹大小情况。

  5. 查看文件是否被进程占用。

如果通过以上方法没有找到问题所在,那么可以使用 lsof | grep deleted 命令,看看是否删除掉的文件仍然被进程占用而没有进行实际删除。

Linux服务器忘记root密码怎么办

  1. 重启或者开机时,在倒数3秒的界面按下任意键。
    修改密码1

  2. 该界面有如下提示(e 编辑 a 更改内核选项 c 命令行 b 启动),所以我们按下”e”编辑。
    修改密码2

  3. 上下键选中第二行再按下”e”编辑
    修改密码3

  4. 行末加上”singal,s,S,1”其中一项,然后回车。
    修改密码4

  5. 按”b”,启动。

  6. 启动之后就可以用passwd命令重置root命令。
    修改密码5

用shell脚本输出带颜色字体

语法

shell脚本中echo显示内容带颜色显示,echo显示带颜色,需要使用参数-e,如下:

1
echo -e "\033[41;36m something here \033[0m"

echo内容带颜色显示

其中41的位置代表底色, 36的位置是代表字的颜色

色值对应

1、字背景颜色和文字颜色之间是英文的"";
2、文字颜色后面有个m;
3、字符串前后可以没有空格,如果有的话,输出也是同样有空格;

颜色对应

下面是相应的字和背景颜色,可以自己来尝试找出不同颜色搭配

1
2
3
4
5
6
7
echo -e “\033[31m 红色字 \033[0m”

echo -e “\033[34m 黄色字 \033[0m”

echo -e “\033[41;33m 红底黄字 \033[0m”

echo -e “\033[41;37m 红底白字 \033[0m”

字颜色:30—–37

1
2
3
4
5
6
7
8
echo -e “\033[30m 黑色字 \033[0m” 
echo -e “\033[31m 红色字 \033[0m”
echo -e “\033[32m 绿色字 \033[0m”
echo -e “\033[33m 黄色字 \033[0m”
echo -e “\033[34m 蓝色字 \033[0m”
echo -e “\033[35m 紫色字 \033[0m”
echo -e “\033[36m 天蓝字 \033[0m”
echo -e “\033[37m 白色字 \033[0m”

字背景颜色范围:40—–47

1
2
3
4
5
6
7
8
echo -e “\033[40;37m 黑底白字 \033[0m” 
echo -e “\033[41;37m 红底白字 \033[0m”
echo -e “\033[42;37m 绿底白字 \033[0m”
echo -e “\033[43;37m 黄底白字 \033[0m”
echo -e “\033[44;37m 蓝底白字 \033[0m”
echo -e “\033[45;37m 紫底白字 \033[0m”
echo -e “\033[46;37m 天蓝底白字 \033[0m”
echo -e “\033[47;30m 白底黑字 \033[0m”

控制选项说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
\33[0m 关闭所有属性 
\33[1m 设置高亮度
\33[4m 下划线
\33[5m 闪烁
\33[7m 反显
\33[8m 消隐
\33[30m — \33[37m 设置前景色
\33[40m — \33[47m 设置背景色
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标

实例:五颜六色的shell脚本

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
#!/bin/bash

clear
echo -e "\033[1m Hello World"
# bold effect
echo -e "\033[5m Blink"
# blink effect
echo -e "\033[0m Hello World"
# back to noraml

echo -e "\033[31m Hello World"
# Red color
echo -e "\033[32m Hello World"
# Green color
echo -e "\033[33m Hello World"
# See remaing on screen
echo -e "\033[34m Hello World"
echo -e "\033[35m Hello World"
echo -e "\033[36m Hello World"

echo -e -n "\033[0m"
# back to noraml
echo -e "\033[41m Hello World"
echo -e "\033[42m Hello World"
echo -e "\033[43m Hello World"
echo -e "\033[44m Hello World"
echo -e "\033[45m Hello World"
echo -e "\033[46m Hello World"

echo -e "\033[0m Hello World"

五颜六色的脚本效果

重启命令

  1. reboot

  2. shutdown -r now 立刻重启(root用户使用)

  3. shutdown -r 10 过10分钟自动重启(root用户使用)

  4. shutdown -r 20:35 在时间为20:35时候重启(root用户使用)

如果是通过shutdown命令设置重启的话,可以用shutdown -c命令取消重启

关机命令

  1. halt 立刻关机

  2. poweroff 立刻关机

  3. shutdown -h now 立刻关机(root用户使用)

  4. shutdown -h 10 10分钟后自动关机

如果是通过shutdown命令设置关机的话,可以用shutdown -c命令取消重启

查看当前使用的网卡

1
watch cat /proc/net/dev

重启网卡方法

全部网卡重启

重启网卡使设定生效:

1
sudo /etc/init.d/networking restart

单个网卡重启

关闭网卡 ifdown eth0

开启网卡 ifup eth0

禁用网卡

1
2
3
vi /etc/sysconfig/network-scripts/ifcfg-eth1

onboot=NO

修改IP

动态

设定一个网卡IP:

1
ifconfig eth1 192.168.1.10 netmask 255.255.255.0

重启网卡使设定生效:

1
sudo /etc/init.d/networking restart

静态

编辑文件 /etc/network/interfaces

1
sudo vi /etc/network/interfaces

并用下面的行来替换有关eth0的行:

1
2
3
4
5
6
7
8
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.2.1
gateway 192.168.2.254
netmask 255.255.255.0
#network 192.168.2.0
#broadcast 192.168.2.255

将eth0的IP分配方式修改为静态分配(static)后,为其制定IP、网关、子网掩码等信息。

将上面的Ubuntu IP地址等信息换成你自己就可以了。

用下面的命令使网络设置生效:

1
sudo /etc/init.d/networking restart

操作防火墙(service方式)

查看防火墙状态

1
service iptables status

开启防火墙

1
service iptables start

关闭防火墙

1
service iptables stop

查找大文件

搜索当前目录下,超过100M大小的文件

1
find . -type f -size +100M

查看超过100M大小的文件及其相关信息

1
find . -type f -size +800M -print0 | xargs -0 ls -l

查找超过100M大小文件,并显示查找出来文件的具体大小

1
find . -type f -size +100M -print0 | xargs -0 du -h

查找超过100M大小文件并对查找结果按照文件大小做一个排序

1
find . -type f -size +800M -print0 | xargs -0 du -h | sort -nr

查找Linux下的大目录

1
du -h --max-depth=1

本文标题:Linux-常见问题及实用技巧(持续更新)

文章作者:王洪博

发布时间:2018年03月17日 - 10:03

最后更新:2019年09月20日 - 10:09

原始链接:http://whb1990.github.io/posts/22401d2a.html

▄︻┻═┳一如果你喜欢这篇文章,请点击下方"打赏"按钮请我喝杯 ☕
0%