Linux 常用命令笔记

Linux 常用命令笔记

1. locate

  locate:用来定位文件的位置,如:locate a.txt 但是这个命令有延迟,也就是新建的文件不一定能搜索到,如果非要找到新建的文件可以使用 updatedb 命令来强制更新locate依赖的数据库。

2. 查询文本文件行数

  wc -l filename

3. 列举一级子目录的大小

  du -h --max-depth=1

3. top 使用技巧

  在top环境中,大写字母E可以用来改变显示界面中的单位。

3.远程Linux服务器

  ssh username@192.168.1.1

  或

  ssh username@hostnme

  使用主机名需要在本地进行主机名与IP地址映射:

  在/etc/hosts文件中添加一行:192.168.1.1 hostname.domain

5.远程传送文件

  传送文件:

  scp /home/Download/filename username@host_ip:/home/Download/

  在后面增加文件名可以用来重命名

  传送目录:

  scp -r /home/Download/foldername uesername@host_ip:/home/Download/

  远程传送都需要对方用户的密码。

6.添加用户和组

  添加组:groupadd name

  删除组:groupdel name

  注意:一般在为daemon程序添加用户时经常把主目录设置在/var/lib/name/

  添加用户:useradd -d /var/lib/name -m mongo -g mongo -s /sbin/nologin

      -d:指定主目录

      -m:指定自动创建不存在的目录

      -g:指定用户组

           -s:非登录用户
      usermod -d /home/new mongo // 更改用户目录

      useradd mongo -s /sbin/nologin //不指定home目录,自动建立home目录

7.修改文件所属用户名和组

  chown [-R] username file/directory
  chown [-R] username:groupname file/directory
    -R : 进行递归( recursive )的持续更改,即连同子目录下的所有文件、目录都更新成为这个用户组
8.查看当前用户与组
  whoami //查看当前用户名
  groups username //查看当前用户所属组
  groups //查看当前用户所在组的成员
9. 在目录中查找文件中的字符串
  查找目录下的所有文件中是否含有某个字符串 
  find .|xargs grep -ri "IBM" 
  查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 
  find .|xargs grep -ri "IBM" -l
10. 监控网络流量
  (1)yum install iptraf
         iptraf-ng 提供了对:链接与端 的流量/包的监控,同时 iptraf-ng 使用了命令行界面形式提供,不用记忆命令了,极好。
    (2)yum install nethogs
     nethogs 提供了针对进程的网络字节流量监控机制,与 iptraf 可以功能互补。
  (3)yum install sysstat
      sysstat 工具提供了丰富的系统检测功能,sar 可以检测网络流量。
         示例:sar -n DEV 5 2 每相隔5秒取一次值,一共2次,然后退出
      rxpck/s:每秒钟接收的数据包
      txpck/s:每秒钟发送的数据包
      rxbyt/s:每秒钟接收的字节数
      txbyt/s:每秒钟发送的字节数
      rxcmp/s:每秒钟接收的压缩数据包
      txcmp/s:每秒钟发送的压缩数据包
      rxmcst/s:每秒钟接收的多播数据包rxpck/s:每秒钟接收的数据包
      txpck/s:每秒钟发送的数据包
      rxbyt/s:每秒钟接收的字节数
      txbyt/s:每秒钟发送的字节数
      rxcmp/s:每秒钟接收的压缩数据包
      txcmp/s:每秒钟发送的压缩数据包
      rxmcst/s:每秒钟接收的多播数据包
11. CentOS 7 防火墙
  systemctl enable firewalld.service // 开启防火墙开机启动
  systemctl disable firewalld.service // 关闭防火墙开启启动
  systemctl start firewalld.service // 启动防火墙
  systemctl stop firewalld.service // 关闭防火墙
12. 防火墙开放端口
  firewall-cmd --zone=public --add-port=123/tcp --permanent // 永久开放 tcp 端口:123,成功返回:success
  firewall-cmd --reload // 重新加载,成功返回:yes
  firewall-cmd --zone=public --query-port=39879/tcp // 查询开放的端口时候成功,成功返回:yes
13. CentOS 7 包管理
  查询包:yum list | grep jdk-devel
  安装包:yum install java-1.8.0.-openjdk-devel.x86_64
14. Linux 文件重定向
  a.out 1>log.txt 2>&1
  将a.out程序的标准输出重定向的log.txt文件,并同时将标准错误重定向到标准输出中。
15. 安装字体文件
  cp yahei consolas hybrid.ttf /usr/share/fonts/
       cd /usr/share/fonts/
  fc-cache -fv
  fc-list | grep yahei
 
 
16. cut
  按照字符/字节对文件进行分割。
    -b 按照字节分割
    -c 按照字符分割
    -d 自定义分割副
    -f 配合-d一起使用
  范围控制:
    n:显示第n项
    n, m:显示第n,m项
    n-m:显示从第n到第m项[n, m]
    n-:显示从第n到行未
    -m:显示从第1到第n
    -:显示正行
  
echo 'test' | cut -c2
e
echo 'test' | cut -c2-3
es
echo 'x y z' | cut -d ' ' -f 3
z
cut -d ' ' -f 3 test.txt
z

 17. egrep

  按照规则过滤文本文件

  -c 统计匹配行数

  -n 显示行号

  -v 过滤带有关键字行

  -A 2 额外显示匹配行的后2行

  -B 2 额外显示匹配行的前2行

  -C 2 额外显示匹配行的前后2行

  -o 只显示匹配关键字

egrep -o 'role=[0-9]+' test.log | sort | uniq -c
egrep -o '\btoken:\S*\b' test.log | sort | uniq -c

18. awk

  按照规则对文本进行列过滤

    -F 指定分割符
     $0 当前行
     $1, $2 当前行的第一列、第二列
    NF 当前记录的列数
    NR 当前记录的行数
    FNR 各个文件自己的行号
    RS 输入记录分隔符,默认换行符
    OFS 输出字段分割符,默认空格
    ORS 输出记录分割符,默认换行符
    FILENAME 当前文件名
echo 'linux shell test' | awk '{print NR, $1}'
1 linux

ls -lh | awk '{sum+=$5} END {print sum}'
1081.4

ls -h | awk 'BEGIN{pv=0} {pv++} END{print "pv:"pv}'
pv:11

ls -lh | awk '{sum[$2]+=1} END{for(i in sum)print i "\t" sum[i]}'
288K    1
1    5
2    2
3    2
9    2

awk -F: '{if ($1 == "root") {print $1;print $6}}' /etc/passwd
root
/root
注意:; 可以起到换行的作用。

注意:
awk '{if($1>0) {print NR, $1} else {print NF, $2}}' data.txt

awk '{if($>0)} print NR, $1; else print NF, $2}' data.txt
这两种方式任选一种,}和;不可以同时出现,如下是错误的。
// 错误:
awk '{if($1>0) {print NR, $1}; else {print NF, $2}}' data.txt
// awk分割字符串
awk 'BEGIN{begno=123;split(begno,str,"");print str[1],str[2],str[3]}'
// awk print tab
awk -F: '{print $1,"\t",$7}' /etc/passwd
// awk 数值和字符串比较问题
// awk 自动将 $1,$2转化成了数值型,已经越界,
echo "10025350462330387914 10025350462330388480" | awk '{if ($1"" == $2"") print $1 " = " $2; else print "NO"}'
egrep 'GetLinkById' a.txt | awk 'BEGIN{start_time=""; stop_time=""; start=0; stop=0; num = 0; total_count=0; total_cost=0} {split($2"", str, "."); if ($7"" == "start") {start=str[2]; start_time=$2""} if ($7"" == "stop") {stop=str[2]; stop_time=$2""}; num++; if (num == 2){ num = 0; total_count++; total_cost+=stop-start; print $9 "\t" start_time "\t" stop_time "\t" start "\t" stop "\t" stop-start}} END{print total_count, total_cost}'
awk 'BEGIN{count=0; total=0} {split($8, str, "="); count++; total+=str[2]; print $8, str[1], str[2]} END{printf("%d %f %f\n", count, total, total/count)}' new_stop.log

19. 查看处理器核数

    grep 'model name' /proc/cpuinfo

 20. 命令替换

  一个命令想用上一个命令的输出值作为入参,可以使用命令替换来实现。

  格式:命令1 '命令2'

  示例:cd 'pwd'

  其中命令2的输出作为命令1的参数,注意这里的符号是指反引号,被它括起来的内容作为命令执行,执行的结果作为命令1的参数。例如以下命令将 pwd 命令列出的目录作为 cd 命令的参数,结果仍停留在当前目录下。

21. 时间转换

date
Tue Jun  4 14:06:25     2019

# Unix标准时间化
date +%s
1559628467

# 反解Unix标准时间
date -d @1559628467
Tue Jun  4 14:07:47     2019

#高级操作(注意反引号)
date -d @`date +%s`

 22. FTP

    ftp ip

   input name

  input password

  下载文件:get /work/data/d1.txt /home/app/d1.txt

  上传文件:put /home/app/d1.txt /work/data/d1.txt

 

23. 解压缩

     tar.gz tar.bz2 tar gz bz2

  压缩:tar -czvf filename.tar.gz dir/file

       解压:tar -xzvf filename.tar.gz

       查看:tar -tzvf filename.tar.gz

  -c:压缩(同时支持文件和文件夹)

       -t :查看压缩包

       -x :解压,可以搭配-C(大写)在特定目录解开

     -j : 适用于bz2

     -z :适用于gz(gzip)

        -v :显示文件名

        -f:(路径+文件名+后缀名)

       -C:解压特定目录

       -p:保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件

       --exclude=FILE:在压缩的过程中,不要将那些文件打包


24. 系统信息查询

#查询Linux内核版本
uname -a

#查询Linux系统版本
cat /etc/issue

# 查询GLIBC版本
strings /lib64/libc.so.6 |grep GLIBC

 

25. 远程文件同步

# Start rsync service:
# For Ubuntu
sudo systemctl restart rsync.servcie
sudo systemctl status rsync.service

# Update config file for rsync:
read only = no

# Sync local directory to remove directory(If the Doc is not exist in destination, rsync will create a new directory named Doc):
rsync -av ./Doc wanghaiyang@10.1.0.31:/home/workspace

# Sync remove directory to local directory:
rsync -av wanghaiyang@10.1.0.31:/home/workspace/Doc ./

 

 

posted on 2016-01-20 21:00  wanghaiyang1930  阅读(343)  评论(0编辑  收藏  举报

导航