Linux

关于Linux(主要是CentOS)的一些常用命令及使用方法

查看目录下文件及文件夹大小

du -h --max-depth=1

查找 find

# 查找所有空目录,排除 .git ,并在空目录下新建 .gitignore 文件
# {} 表示查找到的结果,\; 表示语句结束
find . -path './.git' -prune -o -type d -empty -exec touch {}/.gitignore \;

# 查找出m和cache目录下所有的php文件,修改文件属性
# -o 可以理解成 或,-prune 表示排除
find . -path './m' -prune -o -path './cache' -prune -o -type f -name '*.php' -exec chattr +i {} \;

# 将/etc/httpd/logs目录下所有10天前带"."的文件删除
find /etc/httpd/logs/ -mtime +10 -name "*.*" -exec rm -rf {} \;

# 查找当前目录下(包含子目录)所有文件,修改权限
find . -type f -exec chmod 644 {} \;
find . -type f|xargs chmod 644

当使用-atime-ctime-mtime时需要注意,以-atime为例,手册原文描述:
File's data was last accessed less than, more than or exactly n*24 hours ago.When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago.
简单来说,这三个参数后面带的+n -n 或者 n,都是以24小时为一个单位,小数部分是忽略的,所以+1就是至少两个24-hour 以前。
stat命令可以查看文件的详细信息。

复制 cp

主要用于复制文件或目录。
参数说明:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。
-d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式,Linux系统中也有软硬链接。
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。

文件打包压缩tar

压缩,example 可以是目录,也可以是文件:
tar zcvf example.tar.gz example

解压文件:
tar zxvf example.tar.gz

解压某一个文件,就是在普通解压命令后面指定文件或目录即可:
tar zxvf example.tar.gz test.php

排除目录或文件
--exclude=file1
--exclude=pardir/dir1

查看压缩包内容
tar -tf example.tar.gz

删除乱码文件

# 查看文件inum
ls -li

# 查找指定inum文件并执行相关操作
find . -inum 2458265 -exec rm -rf {} \;
find . -inum 2458265 -exec mv {} newfile \;

find . -inum 2458265 -delete

screen

Screen是一个全屏窗口管理器,它在几个进程(通常是交互式shell)之间多路复用一个物理终端。
# 新增一个窗口
screen -S new

# 中断一个窗口,按住Ctrl,然后依次按下 a 和 d 键

# 恢复窗口
screen -r new

# 查看screen窗口信息
screen -ls

# 使用 exit 命令退出当前窗口

systemd服务管理

#systemctl enable crond.service // 服务开机启动(.service可以省略)

#systemctl disable crond.service // 禁止开机启动

#systemctl status crond.service // 查看服务状态

#systemctl start crond.service // 启动某个服务

#systemctl stop crond.service // 停止某个服务

#systemctl restart crond.service // 重启某个服务

#systemctl is-enabled crond // 查看某个服务是否开机启动

软链接和硬链接

Linux系统是通过索引节点号(inode number)识别文件的,保存在磁盘分区中的文件不管是什么类型都会分配这样一个编号。当多个文件名指向同一个索引节点时,这就是硬链接。硬链接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止“误删”操作。只删除一个链接并不影响索引节点本身和其它的链接,只有当最后一个链接被删除后,文件的数据块及目录的链接才会被释放,也就是说,文件真正删除的条件是与之相关的所有硬链接文件均被删除
软链接也叫符号链接,有点类似于Windows系统的快捷方式,删除软链接并不会删除文件,当被链接的文件被删除时,软链接就变成了死链接。所以,软链接实际上是一个文本文件,其中包含的是另一个文件的位置信息。
总结起来就是:
v2-9abd33350e3bcb401f379752874f9b52_720w.jpg

Rsync

rsync -avz --exclude="ThinkPHP" -e "ssh -p 56384" root@IP地址:/path/to/source  /path/to/dest

# 第一个目录/path/to/source是源目录SOURCE,后面/path/to/dest是目标目录DEST
# source 后面不带 /,则把source整个目录同步到 dest 目录下
# source 后面带了 /,则把source目录下的所有子目录(不包含source自身)同步到 dest 目录下
# -e 可以指定非默认的SSH端口
# --exclude 可以排除目录或文件,比如 --exclude "*.psd"
# 上面的例子可以看做是把远程内容拉取到本地,若源目录和目标目录对调,则可理解为把本地内容推送到远程目录

添加新评论