1. 强制命令模式执行: :w !sudo tee %
1
2
3
4
5
6
7
w: 表示保存文件
!: 表示执行外部命令
tee: linux命令,这个有点复杂,可以查看linux命令帮助
%: 在执行外部命令时,%会扩展成当前文件名;这个%区别于替换时的%,替换时%的意义是代表整个文件,而不是文件名

# 只读文件,不修改强制退出
q!

上述方式非常完美的解决了不能保存只读文件的问题,但毕竟命令还是有些长,为了避免每次输入一长串的命令,可以将它映射为一个简单的命令加到 .vimrc 中:

1
2
" Allow saving of files as sudo when I forgot to start vim using sudo.
cmap w!! w !sudo tee > /dev/null %

这样,简单的运行:w!! 即可。命令后半部分 > /dev/null 作用为显式的丢掉标准输出的内容。

  1. 删除大量文件

Linux 下删除大量文件效率对比,看谁删的快!

1
2
3
4
# 首先建立空文件夹blanktest
$ time rsync -a --delete blanktest/ test/
rsync -a --delete blanktest/ test/ 0.59s user 7.86s system 51% cpu 16.418 total
16s,很好很强大。
  1. 查看磁盘可用空间
1
2
3
df -h  # 查看磁盘可用空间
du -h --max-depth=1 ./ # 查看当前目录及其目录的文件大小
du -sh ./ # 查看当前目录总大小
  1. apt-get 下载失败 E: Unable to correct problems, you have held broken packages
1
2
3
# 改用aptitude,更加方便智能
sudo apt-get install aptitude
aptitude get install yourpkg
  1. 查看进程

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 特定用户的特定进程
    ps -u root -ef | grep consume
    # kill特定用户的所有进程
    # 1. 打印出所有pid,再kill
    ps -ef | grep ttlsa | awk '{ print $2 }' | sudo xargs kill -9
    # 2. -v --invert-match 显示不包含匹配文本的所有行
    ps -ef | grep dynamic.sh | grep -v grep | awk '{print $2}' | xargs kill -9
    # 3. pgrep -u参数查出用户的所有pid,然后依次kill
    pgrep -u ttlsa | sudo xargs kill -9
    # 查看进程 -e 显示系统内所有进程信息 -l long 长格式显示 -f full 完整显示
    ps -elf
    • ps -aux 解释

      1
      2
      #   user     pid  cpu mem  vsz   rss  tty  stat start time command
      >> chaihua+ 26879 0.0 0.0 112820 968 pts/47 S+ 15:49 0:00 grep --color=auto chaihuajun
      列名 解释
      USER 进程的拥有者用户名
      PID 进程的 ID
      %CPU 该进程使用 CPU 资源的百分比
      %MEM 该进程使用内存资源的百分比
      VSZ 进程使用的虚拟内存大小
      RSS 进程使用的实际内存大小
      TTY 进程所绑定的终端
      STAT 进程的状态
      START 进程的启动时间
      TIME 该进程占用 CPU 时间的累计值
      COMMAND 进程所对应的命令

      其中, -u 参数指定了只显示与当前用户相关的进程,而 x 参数指定了显示所有进程,包括没有控制终端的进程。

  2. 查看内存

    1
       
  3. 更改文件夹权限及用户

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # -R 递归 修改文件所有者
    chown [-R] username dirname/filename
    # 修改文件所在群组
    chgrp [-R] groupname dirname/filename
    # 查看用户组
    cat /etc/group
    # 创建群组
    groupadd groupName
    # 将用户添加到指定组 -a append -G 将一个用户添加到多个群组
    usermod -a -G groupA user
    # 修改访问权限
    # ll 查看文件属性

    drwxrw-r–

    • d 属性
    • rwx 所有者权限
    • rw- 群组用户权限
    • r-- 其他用户权限

    chmod 用数字修改文件访问权限,绝对权限

    权限 数字
    r 4
    w 2
    x 1

    chmod 用字母分配权限,相对权限

    字母 含义 符号 含义
    u 所有者 + 添加权限
    g 群组用户 - 移除权限
    o 其他用户 = 分配权限
    a 所有用户

    chmod g+rx file 给群组用户添加可读、可执行权限

  4. ssh 配置公私钥

    参考链接:公私钥配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 生成公私钥对 -t 密钥类型 -c 注释文字
    ssh-keygen -t rsa -C 'chaihj15@163.com'

    # .ssh下找到id_rsa.pub 上传到服务器
    # 追加到服务器ssh认证文件中
    cat /xxx/id_rsa.pub >> ~/.ssh/authorized_keys

    # 如果没有authorized_keys,创建&赋予600权限
    touch authorized_keys
    chmod 600 authorized_keys

    本机创建~/.ssh/config

    1
    2
    3
    4
    5
    Host            alias            #自定义别名
    HostName 114.11.11.110 #替换为你的ssh服务器ip或domain
    Port 22 #ssh服务器端口,默认为22
    User root #ssh服务器用户名
    IdentityFile ~/.ssh/id_rsa #第一个步骤生成的公钥文件对应的私钥文件

    更改权限

    1
    chmod 600 config

    运行,愉快登录

    1
    ssh alias

    有些服务器默认不支持密钥登陆,需要修改 /etc/ssh/sshd_config 配置

    1
    2
    去掉#
    #PubkeyAuthentication yes
  5. 发现本机 ip

    1
    curl ifconfig.me
更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

chaihj15 微信支付

微信支付

chaihj15 支付宝

支付宝