Linux下最常用的命令汇集

Linux下最常用的命令汇集

本篇会持续更新

查看系统信息

cat /etc/issue (i386 i686 32位;x86_64 64位)
uname -i 查看系统位数
uname -r 查看内核版本
cat /etc/*release
free -m 查看内存

关机重启

shutdown -h now, poweroff, halt 立即关机
shutdown -r now, reboot 立即重启
shutdown -r 20:35 在时间为20:35时候重启
shutdown -h 10 10分钟后关机

会话相关

whoami 显示用户标识
who 显示所有当前登录系统的用户标识
w 显示谁登录系统以及他们在做什么
logout 注销
last 显示用户过去登陆记录

目录

pwd 打印当前路径
mkdir 创建目录
rmdir 删除目录
rmdir -p 连同父母录一起删除(均为空目录)
rm -rf 删除文件和目录
pushd dir 改变工作目录至dir,并将dir压入栈(位于栈顶,编号为0)
pushd +n 改变工作目录,将#n目录移到栈顶
popd 弹出栈顶
popd +n 从栈移出目录#n

文件操作

ls

  • ls -l 查看权限

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    drwxrwxrwx 10 tsw  tsw  4096 Jan 27 22:39 tsw

    # 输出内容解释
    文件类型: d
    Owner权限: rwx
    Group权限: rwx
    Other权限: rws
    硬连接数: 10
    Owner: tsw
    Group: tsw
    大小: 4096 字节
    修改时间(Modify) Jan 27 22:39
    文件名称: tsw
  • 文件类型:

    • -, f 普通文件
    • d 目录文件
    • l 符号链接
    • c 字符设备
    • b 块设备
    • p 命名管道
    • s 套接字文件
  • 权限类型(对于文件)

    • r 读权限
    • w 写权限
    • x 执行权限
  • 权限类型(对于目录)
    • r 可以ls (linux如果对一个文件有读权限, 需要从根->当前目录均有r权限)
    • w 可以在该目录下创建文件和目录, 删除文件, 重命名文件
    • x 可以cd进去
  • ls的颜色
    • 深蓝色: 目录
    • 绿色: 可执行文件
    • 红色: 压缩文件
    • 浅蓝色: 链接文件
    • 灰色: 其它的一些文件

ls -lh 常用, 会自动转换文件大小单位
ls -lt 按修改时间降序 (默认按文件名称排列)
ls -lrt 按修改时间升序

ls -i 查看文件节点号

stat

  • stat a.txt
    1
    2
    3
    4
    5
    6
    7
    8
      File: a.txt
    Size: 19 Blocks: 8 IO Block: 4096 regular file
    Device: 1000004h/16777220d Inode: 6641771 Links: 1
    Access: (0755/-rwxr-xr-x) Uid: ( 501/ tsw) Gid: ( 20/ staff)
    Access: 2015-08-11 10:37:46.000000000 +0800 # 访问时间
    Modify: 2015-08-11 10:37:29.000000000 +0800 # 文件内容修改时间 (ls时默认的时间)
    Change: 2015-08-11 10:38:54.000000000 +0800 # 文件属性属性修改时间
    Birth: 2015-07-07 16:57:32.000000000 +0800 # 文件创建时间

umash

设置当前用户默认掩码值
666 普通不可执行文件
777 普通可执行文件
777 目录
减去用户掩码值得到默认文件权限。

shred

清空文件(文件填充随机数)
-v 显示详细过程
-z 全填0
-u 清空后删除
-f 忽略受限的文件权限

which

查看某个命令的位置
建议使用 which -a 会列出所有位置,默认使用的位于第一个 (不建议使用whereis)

touch

touch 将访问和修改时间改为当前时间

ln

ln -s 建立符号链接

  • 与符号链接相关的目录命令:
    • cd -P 进入真实目录
    • pwd -P 显示真实目录
    • cd -L 符号目录(默认)
    • pwd -L(默认)

touch

touch * 将文件改为相同的访问时间和修改时间
touch -c 即使制定了新的文件也不会自动创建
touch -m 改变修改时间
touch -a 改变访问时间
touch -t 200203120610 改变文件时间为2002年3月12日6点10分

cp

cp -i 交互式复制(建议) ,会提示是否覆盖(cp默认自动覆盖)
cp -p 保持文件属性
cp -r 拷贝目录
cp doc/* backups 复制doc中的文件到backups
cp -r doc backups 将doc目录复制到backups中去

cp a b (其中a是文件)
1). 若b是目录,则将a复制到b中去
2). 若b是文件,则用a覆盖b
3). 若无b,则复制一个a命名为b

cp file file$(date +%s) 以时间命名

mv

mv -i 交互式(建议)
mv -f 强制复制,并忽略-i
原理与cp相同

rm

rm -i 交互式删除
rm -r 删除整个目录
rm -rf 强制删除目录及文件(慎用)

hexdump

1
2
hexdump -C a.txt  # hex + ascii
hexdump -c a.txt # 仅字符, 特殊字符会显示为转义符

其他

id 显示uid,gid,所在group
cat 打印文件内容
tail -f a.log -n 30 打印最后30行, 并持续输出

进程

pid变量

$$
$!

sleep

sleep 5 暂停5s
sleep 5d 暂停5天

jobs

显示作业列表
jobs -l 显示ID

fg

将作业移至前台
fg 2
fg -
fg +
为了方便,bash用%来代替fg, 最常用的一个是%-(切换到上一个程序)

bg

将作业移至后台

&

[command] & 后台作业(挂在到当前bash)

nohup

nohup is a POSIX command to ignore the HUP (hangup) signal. The HUP signal is, by convention, the way a terminal warns dependent processes of logout.

  • nohup [command] & 忽略SIGHUP信号, 当前bash退出是会挂到PID为1的进程下
  • &符号是必须的, 他会让nohup [command] 在当前shell中后台运行, 当当前shell logout的时候忽略

ps

显示进程信息

注:Unix选项和BSD选项的区别: Unix选项以连字符‘-’开头,BSD选项前无连字符。

基本用法: (以下为Unix标准 ,非BSD)

  • ps 与您的用户标识和终端相关的进程(显示自己的进程)
  • ps -a 与任何用户标识和终端相关的进程(显示所有非守护进程的进程)
  • ps -e 所有进程(包括守护进程) 同 -A
  • ps -p pid 与指定pid相关的进程
  • ps -u userid 与指定用户标识id相关的进程

常用:

  • ps -ef 显示所有用户进程,完整输出
  • ps -t - 仅显示所有守护进程

ps显示了哪些参数:

  • ps: (PID TTY TIME CMD)
  • -f: (UID PID PPID C TTY TIME CMD)
  • -F: (UID PID PPID C SZ RSS STIME TTY TIME CMD)
  • -l: (F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD)
  • -ly:(S UID PID PPID C PRI NI RSS SZ WCHAN TTY TIME CMD)

参数的含义:

  • ADDR : 进程表中虚拟地址 (virtual address within process table)
  • C : 处理器利用率(废弃率) (processor utilization (obsolete))
  • CMD : 正被执行的命令名称 (name of command being executed)
  • F : 与进程相关的标志 (flags associated with the process)
  • NI : nice值,用来设定优先级 (nice number, for setting priority)
  • PID : 进程ID (process ID)
  • PPID : 父进程ID (parent’s process ID)
  • PRI : 优先级(较大数字=较低优先级) (priority (higher number = lower priority))
  • RSS : 内存驻留空间(内存管理) (resident set size (memory management))
  • S : 状态代码(D,R,S,T,Z) (state code (D,R,S,T,Z))
  • STIME : 累计系统时间 (cumulative system time)
  • SZ : 物理页的大小(内存管理) (size in physical pages (memory management))
  • TIME : 累计CPU时间 (cumulative CPU time)
  • TTY : 控制终端的完整名称 (full name of controlling terminal)
  • UID : 用户标识 (userid)
  • WCHAN : 等待通道 (wait channel)

进程状态信息:

  • D: 不可终端睡眠,等待时间结束(D=disk)
  • I: Idle:空闲
  • R: 正在运行,可运行(正在运行队列中等待)
  • S: Sleeping:可中断睡眠
  • T: Suspended:挂起
  • Z: Zombin:僵尸进程

top

监视系统进程
top [-d delay] [-n count] [-p pid[,pid]…]

进入top的命令:
b 显示水平亮条
x 显示垂直亮条
shift + </> 选择列

pmap PID 显示程序内存图

可以用htop替换top

pstree

pstree [-acnpuAG ] [pid|userid]
-a 显示命令参数
-c 展开所有树
-n 同一父进程的子进程按PID排序
-p 显示PID
-u 显示UID
-A 强制以ASCII显示
-G 强制以绘制表格线方式显示

fuser

显示使用该文件的进程ID

kill

kill pid SIGTERM 正常关闭程序
kill -9 pid 快速杀死进程(不释放资源)

网络相关

ifconfig

ifconfig 查ip, 或者 ip addr

netstat

netstat -tln 查端口监听, t:tcp, l:listen, n:number 或者ss -tln

curl

curl ip.cn 查本机外网ip

环境变量

env
/usr/bin/env
/usr/bin/env python 运行当前环境变量下的python命令, 常用在bash脚本的开头
locale 显示定义区域设置的环境变量
export LC_COLLATE = C (更改为POSIX标准,文件名按C语言排序)

加密解密

1
2
3
4
5
6
echo -n abc |md5sum 
echo -n abc |sha1sum
echo -n admin:123 |bash64

# base64 解密
echo -n YXNkY3hjdg== | base64 -d

echo的 -n 表示不输出换行符

时区, 语言环境更改

查看UTC时间 date -u
查看时区 date -R
指定时区并按照格式打印日期 TZ='Asia/Shanghai' date +"BUILD-%y%m%d.%H%M%S"

更改为上海时间
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
更改为UTC时间
ln -sf /usr/share/zoneinfo/UTC /etc/localtime
hwclock 将时间写入硬件

更改语言环境

1
2
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

系统字体

linux添加字体:

  • 安装:
    yum install -y fontconfig mkfontscale
    sudo apt-get -y install fontconfig xfonts-utils

  • 查看字体
    fc-list
    fc-list :lang=zh

  • 加入新字体
    cp MSYH.TTF /usr/share/fonts/

  • 刷新缓存

    1
    2
    3
    mkfontscale
    mkfontdir
    fc-cache

磁盘操作

mount

挂载
mount /dev/sda /mnt/sda
mount -t ntfs /dev/sdc1 /mnt/usbhd1

卸载
umount /dev/sda

du

(disk usage) 查看磁盘使用

df

df -h
查看挂载分区格式:
df -T

fdisk

fdisk -l 列出所有设备

fdisk /dev/sda
p 列出当前分区情况

格式化分区为ntfs格式:
mkntfs -f /dev/sdb1 (需要apt-get安装ntfs-3g)

dd读引导扇区
dd if=/dev/hdxx of=bootsect.lnx bs=512 count=1

dd if=/dev/hda of=mbr.bin bs=512 count=1 然后用hexdump查看 或者 od -xa mbr.bin

格式化:
mkfs -t ext3 /dev/hda1

dd

硬盘读写速度测试
1G, 1M大小的读写测试

读:
dd bs=1M count=1000 if=/dev/zero of=test.dd conv=fdatasync

写:
echo 3 > /proc/sys/vm/drop_caches ; time -p dd if=test.dd of=/dev/null bs=1M

参考

<<Harley Hahn’s Guide to Unix and Linux>>
http://vbird.dic.ksu.edu.tw/linux_server/

0%