Linux系统命令
常用命令使用帮助
用示例方式的简化版man手册, tldr
sudo npm install -g tldr
用户管理
# 添加用户
sudo useradd -m xulz
sudo passwd xulz
#
adduser pt
adduser pt sudo # 添加用户到组
# delete user
userdel username
# also remove home dir
userdel -r username
# create and change home
sudo useradd -m -d /home/data ubuntu
# change user home dir
usermod -d /home/data ubuntu
# change user home dir, and move current dir to home
usermod -m -d /home/data ubuntu
sudo权限
# 创建sudo组用户
useradd -aG sudo xulz
# 添加到sudo
gpasswd -a xulz sudo # Ubuntu
gpasswd -a xulz wheel # CentOS
# sudo免密码输入
echo "xulz ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/nopass
更改UID(user)和GID(group)
usermod -u 2001 xulz
groupmod -g 2001 xulz
# 注: 以上命令仅修改home目录,其他目录需手动执行
# troubleshooting: This account is currently not available
# change from /sbin/nologin
usermod -s /bin/bash username
组权限
# 查看用户组
id xulz
groups user_name
# 获取主用户组
id -gn user_name
# 增加用户到组
usermod -a -G groupname username
groupadd perftest # 增加组
usermod -a -G perftest ubuntu
usermod -a -G perftest jenkins
chgrp -R perftest /opt/jmeter
文件管理
# 列表方式展示可读文件大小
ls -lh
# 列表方式展示,以修改时间排序(新的在前)
ls -lt
# 时间升序(旧的在前)
ls -ltr
# 创建HOME目录
mkhomedir_helper xulz
# 输出全路径
readlink -f myfile
# 创建软链接
# f 代表重写原链接
# T 代表把链接当做普通文件
ln -sfT path/to/file path/to/symlink
文件操作
tar
- 创建文件夹压缩包: tar -cvzf demo.tar.gz demo
- 解压缩tar: tar -xvf filename.tar
zip
- 压缩打包: zip -r squash.zip dir1
gunzip
- 解压缩: gunzip filename.tar.gz
unzip
-o overwrite files WITHOUT prompting
-q[q] quiet print
tree
文件内容浏览
less
head
tail
tail -f <file_name>
head/tail:
- tail -f file 一直读文件
- tail -n +num 从num行显示文件
head -1000 in.log > out.log
tail -1000 in.log > out.log
sed:
sed -n '100,1000 p' in.log > out.log
awk:
awk 'NR>=10&&NR<=20' in.log > out.log
磁盘空间占用
du:
- -s,–summarize
- -c,–total
- -h,–human-readable
# 磁盘空间
df -h
# 每个文件夹汇总
du -hs *
# 文件夹占用空间大小汇总
du -sh /home/xulz
du –sh /var/cache/apt/archives
# 限制深度
du -h --max-depth=N /home/xulz
# 通配符
du -ch */*.png
# 磁盘相关
lsblk
查找大文件
# 最常用
find . -type f -size +100M -exec ls -lh {} \; | awk '{ print $8 ": " $5 }'
# 支持文件名含空格
find $1 -type f -exec stat --format '%Y :%y %n' {} \; | sort -nr | cut -d: -f2- | head
# 执行更快
find $1 -type f | xargs stat --format '%Y :%y %n' | sort -nr | cut -d: -f2- | head
查找并删除缓存文件
lsof | grep delete
lsof -nP | grep '(deleted)'
lsof -nP +L1 | grep '(deleted)'
find /proc/*/fd -ls | grep '(deleted)'
Truncate : > "/proc/$pid/fd/$fd"
权限
# 修改所有者和组
chown user:group file_or_directory
# 修改文件权限
chmod u+x your_file
# [u]ser/[g]roup/[o]thers/[a]ll
# [r]ead/[w]rite/e[x]ecute
# 支持操作符 +-=
# -R 文件夹递归
# 新文件或文件夹自动继承父文件夹
chmod g+s /path/to/parent
删除除某文件外的所有文件
# 如果要删除文件夹,更新为 -type d -r
find . ! -name 'file.txt' -type f -exec rm -f {} +
# 或者
# enable extglob
shopt -s extglob
rm -rf -- !(file.txt)
NFS Mount
# 建立映射
mkdir /var/backups
mount -t nfs 192.168.0.10:/var/backups /var/backups
# 查看是否成功
mount
df -h
# 取消映射
umount /var/backups
mc 目录浏览和文件管理
类似 total command
Server必备
同步系统时间
# CentOS
yum install ntp
systemctl enable ntpd.service # CentOS 7.x
# chkconfig ntpd on # CentOS 6.x
ntpdate pool.ntp.org
# Ubuntu
apt install ntp
service ntp restart
ntpq -p
Locale设置
# 当前locale
locale
# locale列表
locale -a
# 修改shell语言, .bashrc 或 .zshrc
export LANG=en_US.utf8
进程管理
bg/fg
使程序后台/前台运行.
- Ctrl + Z: 使最近的tty进程暂停 (会发送SIGSTP 信号)
- bg: 使得刚暂停的进程编程后台进程
- fg:重新回到前台运行
nohup
no hangup,即使用户登出,也能在后台运行服务。
不挂断地运行命令。 运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。 在注销后使用 nohup 命令运行后台中的程序。 要运行后台中的 nohup 命令,添加 & ( 表示“and”的符号)到命令的尾部。
系统
# 时间戳转换
date -d@1234567890
# 显示unix时间戳
date +%s
# 关机
shutdown -h now
# base64
echo Mjg1YXl3NW9sNmljaDN2Cg== | base64 --decode
文件完整性校验
md5sum file
sha256sum file
硬件信息
sudo dmidecode -t 1
CPU
lscpu
#
cat /proc/cpuinfo
grep 'physical id' /proc/cpuinfo | sort -u |wc -l
grep 'processor' /proc/cpuinfo | sort -u |wc -l
#
lshw -class CPU
# dmidecode 以可读方式读bios数据
dmidecode --type processor
# install first
hwinfo --cpu
Memory
dmidecode --type 17 | grep -i speed
lshw -short -C memory
# 其他
lshw -class disk
lshw -class network
创建ISO
- dd: 转换并复制一个文件
# from CD
dd if=/dev/cdrom of=~/cdrom_image.iso
# 产生随机文件
dd if=/dev/urandom of=test.dat count=1024 bs=1024k
# from a directory
mkisofs -o ~/cd.iso /tmp/dir/
增强命令
open
# git
tig
# HTTP Client
httpie
# 彩显文本
lolcat
# 浏览器
w3m
lynx
复制/粘贴
# 复制/粘贴
apt install xclip # 类似Mac的pbcopy/pbpaste
alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'