linux中用到的知识点汇总


linux中用遇到的问题:


1 查看目录中 是否含有某个字符:

grep -rl "Income"  IncomeProject/

2 批量替换 文本:

sed  -i   "s#需要替换的内容#被替换的内容#g"   `grep 需要替换的内容  -rl dist

3 Apache不能正常启动:

在log/error.log里面查看日志如下


(1)
pid file D:/MYOA/logs/httpd.pid overwritten -
- Unclean shutdown of previous Apache run?

原因是Apache未正常关闭(pid时进程号,即process id,启动Apache时,系统会查看httpd.pid中是否有pid,如果有,则打开Apache,如果没有,则会生成一个pid),
原因可能是Apache虽然关闭了,但sem信息量未清除,清除sem信息量即可

(2)
提示No space left on device

原因是 Apache 的进程上限 ~~需要杀掉一些进程

df -i : 查看文件系统的inodes节点数


网上很多人遇到的是硬盘还有空间,但是也报错:No space left on device. 显然他们的问题是因为inode耗尽了。
Linux上创建文件需要对应的inode如果inode 耗尽也无法写入文件,inode可以通过df -i查看。通常由于<2K的小文件过多,而每个小文件又占用一个inode,这样就会出现硬盘空间还有,却无法继续写入。

	解决方法:

		重新格式化/dev/mapper/loop0p2,并指定inode数,如下:
		mkfs.ext4 /dev/mapper/loop0p2  -N 235000 (inode 数根据实际情况估计)

4 linux源码安装:

步骤 : 配置(configure)、编译(make)、安装(make install)

Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。


./configure --prefix=/usr/local/test

其中--prefix选项是配置安装的路径,如果不配置该选项,安装后  

可执行文件 默认放在/usr /local/bin,
库文件默认放在/usr/local/lib
配置文件默认放在/usr/local/etc,
其它的资源文件放在/usr /local/share,比较凌乱。

5 `` 符号用来执行命令:

cd `echo $GOPATH`

6 `` 查看端口占用:

lsof -i:8081

7 chmod 改变权限:

-rw------- (600)      只有拥有者有读写权限。
-rw-r--r-- (644)      只有拥有者有读写权限;而属组用户和其他用户只有读权限。
-rwx------ (700)     只有拥有者有读、写、执行权限。
-rwxr-xr-x (755)    拥有者有读、写、执行权限;而属组用户和其他用户只有读、执行权限。
-rwx--x--x (711)    拥有者有读、写、执行权限;而属组用户和其他用户只有执行权限。
-rw-rw-rw- (666)   所有用户都有文件读、写权限。
-rwxrwxrwx (777)  所有用户都有读、写、执行权限。

8 环境变量设置:

(1)查看当前的环境变量设置
echo $PATH

 (2) 设置环境变量
 - export PATH = $PATH:/usr/local/redis/src :  登出后失效
 - /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中收集shell的设置;
 - /etc/bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取;
 - ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的.bashrc文件;
 - ~/.bashrc:该文件包含用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取;
 - ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件;
 - /etc/profile   中设定的变量(全局)的可以作用于任何用户,
 - ~/.bashrc     等中设定的变量(局部)只能继承/etc/profile中的变量,他们是“父子”关系;

(3)使改变的环境变量生效 
 source ~/.bash_profile

9 查看linux信息

uname -a # 查看内核/操作系统/CPU信息(含x86_64表示32位机器,i686表示32位机器)
head -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母L
cat /proc/cpuinfo # 查看CPU信息的linux系统信息命令
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分区的信息 
# 硬盘大小及格分区使用情况
fdisk -l |grep Disk
Disk /dev/sda: 300.0 GB, 300000000000 bytes

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        228G  80G   148G  27% /
none            4.0K     0  4.0K   0% /sys/fs/cgroup
udev            491M  4.0K  491M   1% /dev
tmpfs           101M  1.4M   99M   2% /run
none            5.0M     0  5.0M   0% /run/lock
none            501M  152K  501M   1% /run/shm
none            100M   44K  100M   1% /run/user


查看所有文件大小
du -sh *

按大小排序
du -sh * | sort -hr


# 内存大小
cat /proc/meminfo |grep MemTotal


# 内存占用
du --max-depth=1 -h

498M    ./bs
48M     ./interest_suggester
28K     ./ddd



# 查看文件数量
ls -l | grep "^-" | wc -l

ls -l
长列表输出该目录下文件信息(注意这里的文件是指目录、链接、设备文件等),每一行对应一个文件或目录,ls -lR是列出所有文件,包括子目录。

grep "^-"
过滤ls的输出信息,只保留一般文件,只保留目录是grep "^d"


mysql 查看表大小

use information_schema;

# 查看指定表的大小


select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data  from TABLES where table_schema='xxx' and table_name='aaaa';



# 查看指定库的指定表的索引大小

SELECT CONCAT(ROUND(SUM(index_length)/(1024*1024), 2), ' MB') AS 'Total Index Size' FROM TABLES  WHERE table_schema = 'test' and table_name='eee'; 
Buy me a 肥仔水!