# -s:排序方式。c , t , l , r 表示记录次数、时间、查询时间的多少、返回的记录数排序; # ac , at , al , ar 表示相应的倒叙; # -t:返回前面多少条的数据; # -g:包含什么,大小写不敏感的; mysqldumpslow -s r -t 10 /slowquery.log #slow记录最多的10个语句 mysqldumpslow -s t -t 10 -g "left join" /slowquery.log #按照时间排序前10中含有"left join"的
CentOS 系统内置的官方源软件更新较慢,而且缺少一些常用软件包,建议安装epel源,EPEL 是 Extra Packages for Enterprise Linux 的缩写(EPEL),是用于 Fedora-based Red Hat Enterprise Linux (RHEL) 的一个高质量软件源,所以同时也适用于 CentOS 或者 Scientific Linux 等发行版。
a. 因为我们使用的是minimal版本的ISO安装,所以系统默认没有wget,我们可以直接用yum安装:[wget是Linux常用的命令行下载工具]
[root@vm02 ~]# yum install -y vim Loaded plugins: fastestmirror Setting up Install Process Determining fastest mirrors * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com Resolving Dependencies --> Running transaction check ---> Package vim-enhanced.x86_64 2:7.4.629-5.el6 will be installed --> Processing Dependency: vim-common = 2:7.4.629-5.el6 forpackage:2:vim-enhanced-7.4.629-5.el6.x86_64 --> Processing Dependency: perl(:MODULE_COMPAT_5.10.1) forpackage:2:vim-enhanced-7.4.629-5.el6.x86_64 --> Processing Dependency: libperl.so()(64bit) forpackage:2:vim-enhanced-7.4.629-5.el6.x86_64 --> Processing Dependency: libgpm.so.2()(64bit) forpackage:2:vim-enhanced-7.4.629-5.el6.x86_64 --> Running transaction check ---> Package gpm-libs.x86_64 0:1.20.6-12.el6 will be installed ---> Package perl.x86_64 4:5.10.1-141.el6_7.1 will be installed --> Processing Dependency: perl(version) forpackage:4:perl-5.10.1-141.el6_7.1.x86_64 --> Processing Dependency: perl(Pod::Simple) forpackage:4:perl-5.10.1-141.el6_7.1.x86_64 --> Processing Dependency: perl(Module::Pluggable) forpackage:4:perl-5.10.1-141.el6_7.1.x86_64 ---> Package perl-libs.x86_64 4:5.10.1-141.el6_7.1 will be installed ---> Package vim-common.x86_64 2:7.4.629-5.el6 will be installed --> Processing Dependency: vim-filesystem forpackage:2:vim-common-7.4.629-5.el6.x86_64 --> Running transaction check ---> Package perl-Module-Pluggable.x86_64 1:3.90-141.el6_7.1 will be installed ---> Package perl-Pod-Simple.x86_64 1:3.13-141.el6_7.1 will be installed --> Processing Dependency: perl(Pod::Escapes) >= 1.04forpackage:1:perl-Pod-Simple-3.13-141.el6_7.1.x86_64 ---> Package perl-version.x86_64 3:0.77-141.el6_7.1 will be installed ---> Package vim-filesystem.x86_64 2:7.4.629-5.el6 will be installed --> Running transaction check ---> Package perl-Pod-Escapes.x86_64 1:1.04-141.el6_7.1 will be installed --> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================= Package Arch Version Repository Size ============================================================================================================================================================================= Installing: vim-enhanced x86_64 2:7.4.629-5.el6 base 1.0 M Installing fordependencies: gpm-libs x86_64 1.20.6-12.el6 base 28 k perl x86_64 4:5.10.1-141.el6_7.1 updates 10 M perl-Module-Pluggable x86_64 1:3.90-141.el6_7.1 updates 40 k perl-Pod-Escapes x86_64 1:1.04-141.el6_7.1 updates 33 k perl-Pod-Simple x86_64 1:3.13-141.el6_7.1 updates 213 k perl-libs x86_64 4:5.10.1-141.el6_7.1 updates 579 k perl-version x86_64 3:0.77-141.el6_7.1 updates 52 k vim-common x86_64 2:7.4.629-5.el6 base 6.7 M vim-filesystem x86_64 2:7.4.629-5.el6 base 15 k
[root@vm02 ~]# vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一。通过剖析硬链接与软链接的联系与区别,我们可更好的了解 Linux 中 VFS 这一通用文件模型。并让 Linux 普通用户和系统管理员正确使用硬链接与软链接,帮助文件系统开发者获取 inode 的相关知识。
Linux的文件系统与目录
现代操作系统为解决信息能独立于进程之外被长期存储引入了文件,文件作为进程创建信息的逻辑单元可被多个进程并发使用。在 UNIX 系统中,操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。为了便于文件的管理,Linux 还引入了目录(有时亦被称为文件夹)这一概念。目录使文件可被分类管理,且目录的引入使 Linux 的文件系统形成一个层级结构的目录树。清单1.所示的是普通 Linux 系统的顶层目录结构,其中 /dev 是存放了设备相关文件的目录。
在 Linux 中查看当前系统已挂着的文件系统类型,除上述使用的命令 df,还可使用命令 mount 或查看文件 /proc/mounts。
1 2 3 4 5 6 7
# mount /dev/sda7 on / type ext4 (rw,errors=remount-ro) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid,nodev) ... ... none on /run/shm type tmpfs (rw,nosuid,nodev)
命令 ls 或 stat 可帮助我们区分软链接与其他文件并查看文件 inode 号,但较好的方式还是使用 find 命令,其不仅可查找某文件的软链接,还可以用于查找相同 inode 的所有硬链接。(见 清单 8.)
# ./dirtest.sh mkdir: cannot create directory `dir_31999': Too many links
# ./linkcount.sh ln: failed to create hard link to `old.file': Too many links
结束语
本文最初描述了 Linux 系统中文件与目录被引入的原因及 Linux 处理文件的方式,然后我们通过区分硬链接与软链接的不同,了解 Linux 中的索引节点的相关知识,并以此引出了 inode 的结构体。索引节点结构体存在在于 Linux VFS 以及实际文件系统中,VFS 作为通用文件模型是 Linux 中“一切皆是文件”实现的基础。文章并未深入 Linux VFS,也没涉及实际文件系统的实现,文章只是从 inode 了解 Linux 的文件系统的相关内容。若想深入文件系统的内容,查看内核文档 Documentation/filesystems/ 是一个不错的方式。