常用

常用参数定义

  • -R : 目录递归
  • -C : 设置工作目录

环境变量

  • 环境变量永久新增方法:文件追加行,如export path=$path:/path1:/pahtN
    • 于/etc/profile文件:对所有用户生效(永久的)
    • 用户目录下的.bash_profile文件,对单一用户生效(永久的)
  • source /etc/profile // 重新加载和生效文件
  • echo $HOME // 显示环境变量HOME
  • export HELLO="Hello!" // 临时设置一个新的环境变量hello
  • env // 显示所有的环境变量
  • readonly TEST // 将环境变量TEST设为只读

软件安装卸载

安装方式 CentOS Ubuntu
离线 rpm文件安装 使用dpkg安装卸载deb文件
在线 yum apt-get

离线安装

系统信息

文本匹配

  • cat debug.txt | grep abc
  • cat debug.txt | grep "[FE]" // []是正则表达式,需加\。字符串需加双引号
  • find . | xargs grep -ri "keyword" // 当前目录下的所有文件中是否含有某个字符串(keyword)
  • find . | xargs grep -ri "keyword" -l // 当前目录下的所有文件中是否含有某个字符串(keyword),只打印出文件名

文件属性

  • linux修改文件所属用户和组
  • chmod -R 766 Document // 修改目录Document的权限。命令详细
  • chmod -R ug+x Document // 目录Document的所有文件都加上执行权限(user + owner)
  • chown -R www-data Document // -R 所有者 路径。修改目录Document的所有者成www-data
  • chgrp -R www-data Document // -R 所在组 路径。修改目录Document的所在组成www-data

文件和目录

  • mkdir -p /d1/d2 // 自动创建多层
  • mv/cp * ../ // 当前目录所有内容(不含目录的层级)移动/拷贝到上一级目录
  • mv/cp dir1/* ./ // dir1目录所有内容(不含dir1层级)移动/拷贝到当前目录。如dir1里有个dir2目录,则当前目录下有个dir2目录,没有dir1目录
  • mv/cp dir1 ./ // dir1目录移动/拷贝到当前目录。即当前目录下有个dir1目录
  • ln -s src_dir dest_dir // 建立软连接,从dest_dir链接到src_dir,如cd dest_dir
  • 提取文件名和目录名
  • 统计文件夹下文件的个数: sudo ls -lR | grep "^-" | wc -l
  • 统计文件夹下文件夹的个数: sudo ls -lR | grep "^d" | wc -l

文件

  • find示例
    • find / -name xyz // 指定文件全路径查找(xyz)
    • find / -name xyz // 指定文件全路径模糊查找(xyz)
    • find . -type f -size +100M // 查找大文件(100M)
    • find ${PATH} -type f -mtime +15 -exec rm {} \; // 删除目录下非最近15天的文件(不含目录),-mmin是分钟
    • find ${PATH} -name "*.log" | xargs rm -f// 删除目录下匹配的文件
  • echo > filePath // 清空文件内容
  • cat srcfile >> destfile // 将文件内容追加到另一个文件末尾
  • rm -rf方式删除文件后,通过df -h会发现磁盘空间并没有释放
    • 原因是在Linux或者Unix系统中,通过rm -rf或者文件管理器删除文件,将会从文件系统的目录结构上解除链接(unlink)。如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也一直被占用。正确姿势是cat /dev/null > file,当然你也可以通过rm -rf删除后重启宿主进程

内存

  • sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches' // 清除不用的缓存
  • top // 查看内存使用情况,输入shift + m可根据内存使用量进行排序
  • top -p 1111 // 查看特定进程号的内存(1111)
  • ps -aux | sort -k4nr | head -5 // 使用内存最多的5个进程

进程

  • nohup 命令 >/dev/null & // 后台运行命令
  • ps -ef | grep mongo | awk '{print $2}' | xargs kill -9 // kill名称对应的进程(mongo)
  • // kill端口对应的进程(27017),推荐第一种,第二种在Ubuntu下会把“PID”取出来导致kill失败
    • kill -9 $(sudo lsof -t -i:27017)
    • lsof -i :27017 | awk '{print $2}' | xargs kill -9

进程查询

  • ps -ef | grep defunct // 僵尸进程
  • ps -ef | grep 进程号 // 查看进程对应的程序
  • ps -ef | grep java // 查看匹配名称的进程(java)
  • ps -ef | grep nginx | wc -l // 查看运行的进程总数
  • ps -fu csvn // 查看特定进程(csvn)
  • lsof -i :9000 // 查看端口执行的进程(9000)

网络

  • ifconfig | grep inet // ip地址

传输

  • wget {url} // 公网下载
  • SSH传输传输文件
    • scp -r localFilePath account@remoteIP:remoteFilePath // 上传
    • scp -r account@localIP:remoteFilePath localFilePath // 下载
    • 注意,如目标路径后面是"/*",则全部文件拷贝到目标路径根目录。
  • sync -av --exclude excludePath /data/src/ /data/dest // 本地同步,排除文件夹(/data/src/excludePath)
  • 远程同步
    • rsync -avz --delete /src_path account@host:/dest_path // 同步删除了的文件,确保两个目录一致
    • rsync -avz --remove-source-files backup.tar /tmp/backups/ // 同步后自动删除源文件,场景是每次都是个新文件

系统自启动配置

  • 方法1:systemctl enable mysql
  • 方法2:在文件/etc/rc.local加入命令,例如:
    cd /var/www/project/ && /usr/bin/java -jar project.jar >/dev/null 2>&1 &
    sh cmd.sh
    /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf &
    service elasticsearch restart
    service iptables stop
    
  • chkconfig命令
  • Ubuntu下使用sysv-rc-conf管理服务

远程免密码登录设置

备份操作

  • 被备份机
    1. 远程免密码登录设置(远程是备份机)
    2. 编写备份脚本,将其设置成定时任务。备份内容如配置文件,运营文件,数据库等
  • 备份机:创建备份目录

    安全

  • openssl x509 -in mycert.crt -out mycert.pem -outform PEM // ssl的crt生成pem

    杀毒

  • ClamAV
  • 镜像网络
    DatabaseMirror db.us.clamav.net
    DatabaseMirror db.de.clamav.net
    DatabaseMirror db.jp.clamav.net
    

    压缩解压

  • 解压:
    • 解压到当前目录:tar -xzvf file.tar.gz
    • 解压到指定目录:tar -xzvf package.tar.gz -C /var/ // C是命令当前的工作目录,相当于解压到的目录
  • zip解压:unzip file.zip // https://www.cnblogs.com/chinareny2k/archive/2010/01/05/1639468.html

  • 压缩目录/etc/code/

    • 绝对地址:tar -czvf file.tar /etc/code/
    • 相对地址:tar -czvf file.tar -C /etc/ code/ // C是命令当前的工作目录
  • 压缩文件:tar -cvf dest.tar.gz srcFilePath

CURL命令

windows和linux回车不一样的处理(LF/CRLF)

  • dos2unix/unix2dos:find . -type f -exec dos2unix {} \;

FTP服务

sudo adduser data
sudo mkdir -p /var/ftp/upload
sudo chown root:root /var/ftp
sudo chmod -R 755 /var/ftp
sudo chown data:data /var/ftp/upload
sudo nano /etc/ssh/sshd_config
在文件最后添加:
Match User data
ForceCommand internal-sftp
PasswordAuthentication yes
ChrootDirectory /var/ftp
PermitTunnel no
AllowAgentForwarding no
AllowTcpForwarding no
X11Forwarding no

sudo systemctl restart sshd

用户

硬盘和nfs

  • df // 硬盘容量
  • du -sh path // 某一指定路径容量
  • du /home --max-depth=1 -h // 显示第一层目录的空间容量
  • du . --max-depth=1 | sort -nr // 顺序排序,显示空间容量
  • df -ih // 索引文件情况
  • lsof | grep deleted // 显示已删除文件
  • fdisk -l // 查看系统磁盘设备信息
  • mount /dev/sdb1 /dir1 // 将U盘挂载到dir1
  • echo '/dev/vdb /data ext4 defaults 0 0' >> /etc/fstab // 永久挂载vdb(格式是ext4)到路径/data/
  • showmount -e IP 显示此IP地址(不填是本机)通过NFS分享出来的目录
  • resize2fs /dev/vda // 扩容

nano

  • ^C // 显示光标位置信息
  • ctrl+w,ctrl-T // 到指定行

系统操作

  • shutdown -h now // 关机
  • reboot // 重启

审计log

/var/log/auth.log*

调试

监控

  • watch -n 1 -d 'ps -ef | grep java' // 每秒钟执行一次命令,定时执行

ssh

diff

补丁

  • diff的输出文件被称为补丁(patch)。patch的作用则是将补丁应用到相应文件(夹)上
  • 补丁(patch)的制作与应用%E7%9A%84%E5%88%B6%E4%BD%9C%E4%B8%8E%E5%BA%94%E7%94%A8)

xargs

sha256和md5

find path -type f -not \( -name '.*' \) -print0 | xargs -0 sha256sum | sort > path.sign
wangyaqi.cn all right reserved,powered by Gitbook该文件修订时间: 2020-01-29 16:06:14

results matching ""

    No results matching ""

    results matching ""

      No results matching ""