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系统的快捷方式,删除软链接并不会删除文件,当被链接的文件被删除时,软链接就变成了死链接。所以,软链接实际上是一个文本文件,其中包含的是另一个文件的位置信息。
总结起来就是:
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"
# 上面的例子可以看做是把远程内容拉取到本地,若源目录和目标目录对调,则可理解为把本地内容推送到远程目录