Linux 常用命令

Posted by shefh on December 28, 2016

nohub守护进程

nohup node xxx.ja >> output.log 2>&1 &

查看进程命令

ps
ps -e        //当前运行的所有进程
ps aux|grep 进程名/端口号

网络相关

查看端口使用情况

netstat 
netstat -tln    // 查看已经使用的端口
netstat -tlnap  // 查看已经使用的端口和对应的程序
netstat -tnlp|grep 80
lsof -i :22  // 显示22端口的使用情况
ss -lnp | grep 22
lsof -nP -iTCP:端口号 -sTCP:LISTEN //显示端口使用情况

查看端口被哪个进程占用

fuser -n tcp 80

查看IP 归属地

## 查看本地ip归属地
curl -4 ipinfo.io

## 查看HTTP代理的IP 归属地
curl -x http://user:pwd@proxy:port -4 ipinfo.io

查看文件尾部的内容

tail -f filename // 监视filename文件的尾部内容(默认10行,增加参数 -n 10),刷新显示在屏幕上

计算文件md5 或者哈希值

# md5 -s shenfh
# MD5 ("shenfh") = 596aa2d0eee531c3bfd6208e2ae1ecba

## 
# shasum Podfile 
# 5e9b682f9159fc2b23d78d3377a1f7ad83412ce1  Podfile

实时查看文件日志

tail  -f fileName

查看当前文件下最大的200个文件

find ./ -type f -print0 | xargs -0 du -h | sort -rh | head -n 200

获取内存大小

free -m 
free -m |grep "Mem" | awk '{print $2}'

free -h // 可以看到具体单位

free -hs 3 // 3s统计一次

查案内存使用情况

  • CPU占用最多的前10个进程:
ps auxw|head -1;ps auxw|sort -rn -k3|head -10 
  • 内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
  • 虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10

进程参数说明

  • %MEM 进程的内存占用率
  • VSZ 进程所使用的虚存的大小
  • RSS 进程使用实际内存的大小
  • TTY 与进程关联的终端(tty)
    • 串行端口终端(/dev/ttySn)
    • 伪终端(/dev/pty/)
    • 控制终端(/dev/tty)
    • 控制台终端(/dev/ttyn, /dev/console)
    • 虚拟终端(/dev/pts/n)
  • STAT 检查的状态:进程状态使用字符表示的,如R(running正在运行或准备运行)、S(sleeping睡眠)、I(idle空闲)、Z (僵死)、D(不可中断的睡眠,通常是I/O)、P(等待交换页)、W(换出,表示当前页面不在内存)、N(低优先级任务)T(terminate终止).

查看磁盘使用情况

df -h

du -sh /路径

查看文件和文件夹大小

du -sh * | sort -n 统计当前文件夹(目录)大小,并按文件大小排序

du -sk filename 查看指定文件大小

文件查找

find /路径 -name 关键字

eg:
find dev/ -name '*.c++'

find ./ -name "*.cpp"  | xargs grep 'aaa.c'   //在文件中查找关键字。

查看登录用户

w

查看登录日志

last

查看所有帐号的登录日志

lastlog

修改用户密码

sudo passwd 用户名

关机/重启

shutdown -h now
shutdown -r now  //重启

压缩文件

tar zcvf 压缩后文件.tar.gz  需要压缩的文件夹/

解压缩

tar zxvf 压缩文件.tar.gz

添加新用户

adduser xxx

useradd xxx
  • useradd不会在/home下自动创建与用户名同名的用户目录,而且不会自动选择shell版本,也没有设置密码,这个用户是不能登录的,需要使用passwd命令修改密码。
  • adduser会在/home下自动创建与用户名同名的用户目录,系统shell版本,会在创建时会提示输入密码,更加友好。

删除用户

userdel test

userdel -r test	//删除用户,同事删除/home目录下的test目录

文件权限常用命令

ls -l 结果说明:

drwxr-xr-x   4 shenfh  staff   136  7 28 16:39 platforms
  • drwxr-xr-x 表示文件权限.第一个字符有3种情况:-表示普通文件,d代表目录,l代表连接文件,b代表设备文件。 后面的9个字符每3个为一组,分别代表文件所有者文件所有者所在用户组其它用户对文件拥有的权限。每组中3个字符分别代表执行的权限,若没有其中的任何一个权限则用-表示。执行的权限有两个字符可选x代表可执行,s代表套接口文件。
  • 4 代表目录下的文件个数(包含隐藏文件)
  • shenfh 表示文件所有者
  • staff 表示文件所有者所在的组
  • 136 表示文件的大小,单位为字节
  • ` 7 28 16:39` 表示文件修改时间
  • platforms 表示文件名

更改文件所有者chown命令

chown命令可以修改文件所有者和用户组。

  • 基本语法
chown [-R] 所有者  文件或目录
chown [-R] 所有者:用户组名称 文件或目录
  • 说明 -R 表示目录下的所有子目录或文件同时修改。

  • eg

sudo chown shenfh testfile //修改文件拥有者为 shenfh 

更改文件所属用户组命令chgrp

  • 基本语法
sudo chgrp [-R] 用户组名称 文件或目录

更改文件读写权限命令chmod

linux文件的三种身份和四种权限,三种身份分别为:

  • u:文件的拥有者
  • g:文件所属的群组
  • o:其他用户

对于每个身份,又有四种权限,分别为:

  • r:读取文件的权限(read), value = 4
  • w:写入文件的权限(write) , value = 2
  • x:执行的权限(execute), value = 1
  • s:特殊权限

  • 基本语法
chmod [-cfvR] [--help] [--version] mode 文件或目录
chmod 777 文件或目录(rwx = 4 + 2 +1 = 7)
  • 参数说明:
    1. ` -c` 若该档案权限确实已经更改,才显示其更改动作.
    2. -f 若该档案权限无法被更改也不要显示错误讯息
    3. -v 显示权限变更的详细资料
    4. -R 表示目录下的所有子目录或文件同时修改
    5. mode 格式为 [ugoa][[+-=][rwx]. a表示对ugo三种身份同事做权限需改。 + 表示增加权限、- 表示取消权限、= 表示唯一设定权限.
  • eg
chmod a=rwx file 对文件的三种身份同时添加读写和可执行权限,意义和 chmod 777 file 等效

文件链接命令

  • 基本语法
 ln -s [源文件] [目标文件]
  • 参数说明
  1. ` -b`:删除/覆盖目标文件之前的备份;
  2. -d-F:建立目录的硬连接;
  3. -f——force:强行建立文件或目录的连接,不论文件或目录是否存在;
  4. -i——interactive:覆盖既有文件之前先询问用户;
  5. -n--no-dereference:把符号连接的目的目录视为一般文件;
  6. -s——symbolic:对源文件建立符号连接,而非硬连接;
  7. -S:将备份的档案都加上 SUFFIX 的字尾;
  8. -v——verbose:显示指令执行过程;
  • 示例
     ln -s /Applications/MacDown.app/Contents/SharedSupport/bin/macdown /usr/local/bin/macdown
    
  • 注意
  • 删除文件的软链接的时候不要加上-rf 参数,否则删除的是真正的文件,而不是链接文件。
  • 删除文件链接的时候文件后面不要带上/

时区相关

更改时区

tzselect
  • 根据tzselect 选择时区
  • cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 修改时区 或者直接修改 /etc/localtime 文件里面的时区
  • date -R 查看时间是否变化

linux 时间同步

时间服务器

ntpdate ntp1.aliyun.com

ntp1.aliyun.com
ntp2.aliyun.com
ntp3.aliyun.com
ntp4.aliyun.com
ntp5.aliyun.com
ntp6.aliyun.com
ntp7.aliyun.com

配置定时更新时间

crontab -e

每天12 点更新时间

0 12 * * *  /usr/sbin/ntpdate ntp1.aliyun.com 

crontab -l 查看

清理journal 垃圾日志

#只保留近一周的日志
journalctl --vacuum-time=1w

#只保留500MB的日志
journalctl --vacuum-size=500M

服务器相关

Create connect ssh-key

# create ssh with comment `ssh-key`
ssh-keygen -t rsa -b 4096 -C "ssh-key"

ssh 连接

# use private key
ssh -i ~/.ssh/ssh_private root@10.10.125.100

# use password
ssl -l root -p 22 10.10.125.100

复制公钥的服务器

ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.10.125.100 -p 22

上传或者下载文件

# 下载文件
scp -i ~/.ssh/xxx root@xx.xx.xx.xx:/data/back/back.sql ./

# 上传文件
scp -i ~/.ssh/xxx /data/back/back.sql root@xx.xx.xx.xx:/data/back

add new rule

sudo ufw allow 8822/tcp
sudo ufw reload

show rules

ufw status numbered

tatus: active

     To                         Action      From
     --                         ------      ----
[ 1] 3302/tcp                   ALLOW IN    Anywhere                  
[ 2] 3302/tcp (v6)              ALLOW IN    Anywhere (v6) 

delete rule

ufw delete [rule number]