firemail

标题: linux常用命令 [打印本页]

作者: java    时间: 2017-11-15 11:05
标题: linux常用命令
本帖最后由 java 于 2019-2-25 10:23 编辑

单独查看内存使用情况的命令:free -m
查看内存及cpu使用情况的命令:top
查看操作系统版本
cat /proc/version
cat /etc/redhat-release


重启
shutdown -r now
reboot
//查看监听的端口
ss -tlnp
查看进程信息
cat /proc/$pid/status

///////////////////////////////////////////查看版本///////////////////////////////////////////////////////////
ubuntu:~$ uname -r   //查看内核版本
4.4.0-64-generic

ubuntu:~$ sudo lsb_release -a
No LSB modules are available.
Distributor ID:        Ubuntu
Description:        Ubuntu 16.04.2 LTS
Release:        16.04
Codename:        xenial

1.cat /etc/issue

2.cat /etc/lsb-release

3.uname -a

4.cat /proc/version

5.cat /etc/redhat-release
CentOS release 5.5 (Final)

查看系统是64位还是32位:
getconf LONG_BIT
64

//////////////////////////////////////////////////////////////////////////////////////////////////////

/////////////数据库////////
mysql:3306 用户root 密码ROOT_106
本机访问 mysql: mysql -u root -p
远程访问 mysql: mysql -h192.168.134.106 -P3306 -uroot -pROOT_106 --default-character-set=utf8mb4 -A
mysql -h192.168.134.106 -P3306 -uadmin -padmin123 --default-character-set=utf8mb4 -A


////软件安装//////////
apt-get install openssh-server openssh-client

sudo yum -y install httpd

//////////////////远程访问/////////////
ssh -i "~/ssh/MyKeyPairAmazon.pem" ec2-user@ec2-xx



//////////////文件移动//////
scp  -i "~/.ssh/MyKeyPairAmazon.pem" /home/hechengjin/gitProjects/test_Test/vue2-happyfri/happyfri/index.html  ec2-user@ec2-xx:~
scp -i "~/.ssh/MyKeyPairAmazon.pem" -r /home/hechengjin/gitProjects/test_Test/vue2-happyfri/happyfri/static   ec2-user@ec2-xx:~

sudo mv static  /var/www/html/
sudo mv index.html /var/www/html/
scp 源  目标
scp hechengjin@192.168.134.106:/home/hechengjin/readme.txt ~
文件夹加 -r
scp -r hechengjin@192.168.134.106:/home/hechengjin/folder ~/folder


////////查找文件内容///////////
查找目录下的所有文件中是否含有某个字符串
find .|xargs grep -ri "IBM"
查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名
find .|xargs grep -ri "IBM" -l



linux查找目录下的所有文件中是否含有某个字符串
grep -rn "flags" *

说明:

-r 是递归查找

-n 是显示行号

* : 表示当前目录所有文件,也可以是某个文件名



-rwxr--r-- (一共10个参数) 表示文件 档案拥有者、群组、其他的对应权限。
u 表示该档案的拥有者,
g 表示与该档案的拥有者属于同一个群体(group)者,
o 表示其他以外的人,
a 表示这三者皆是。

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行
r=4,w=2,x=1

如:
chmod a=rwx file  和 chmod 777 file  效果相同
chmod ug=rwx,o=x file  和 chmod 771 file  效果相同
查找含有某关键字内容的文件

由于日志中含有某些关键字,我要查出具体在某个文件中,可以利用如下:

find /xxx -name "*" | xargs grep "某内容"

/xxx表示路径,"*"表示在含有某关键字名字下的文件中查找,无要求可写为"*“.

find ./ -name "*" | xargs grep "Temporary_random"

表示当前目录下搜索含有Temporary_random内容的所有文件



[size=13.3333px]//查看本地已安装的库
[size=13.3333px]locate libGL
[size=13.3333px]//建议符号连接
[size=13.3333px]sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/libGL.so[size=13.3333px]

查询完整的所有软件安装的文件及路径,可以通过dpkg命令的-L参数查询。
dpkg -L vim




用下面命令来搜索安装包名称
aptitude search multilib

查找到后安装sudo apt-get install gcc-multilib g++-multilib


终端文件系统操作各个目录的区别相对路径与绝对路径绝对路径以/打头, 其他都是相对路径。
.和..是比较特殊的两个相对路径。
软链接ln -sf 源文件路径  目标链接路径
注意:源文件路径如果是相对路径时,它相对的位置是从目标链接所在路径计算。
命令是什么命令也是一个普通的可执行程序或者脚本,但它可以在不输入程序完整路径的情况下就能调用到。
终端可识别的命令除去一小部分shell内置命令(如cd), 其他命令都是根据PATH变量设置的路径搜索的可执行程序。
通过修改PATH可以增加命令搜索的路径。
增加一个新命令有几种方式
遇到一个命令,可以通过man command 或者command --help来获取相关帮助。
可以通过which来查找一个命令所在的位置。如which ls可以发现ls命令在/bin/ls
非常常用的命令用户和权限管理员和普通用户root 用户在系统内是属于独一无二的超级管理员,拥有至高无上的权限(皇帝)。
普通用户的权限则受到很多限制(平民)。
普通用户只能访问自己的东西,既不能访问其他普通用户的文件,更不能访问root用户的文件。
权限又根据用户分为拥有者 ,组用户,其他用户,所以一个文件或目录的权限最大是777。
相关命令进程管理进程可以认为是程序执行时的一个实例。可以用pid标识同一个程序的不同实例。每一个进程的pid都不相同.
如何获取一个后台进程的pid如何杀掉一个进程一些常用命令行工具获取系统信息关机,重启压缩解压远程操作,拷贝,需要安装openssh-server查找文件和内容其他


作者: java    时间: 2017-12-27 19:22
Linux 软连接与硬连接
1 . 使用方式 :ln [option] source_file dist_file
                    -f 建立时,将同档案名删除.
                    -i 删除前进行询问.
                    ln -s abc cde 建立abc 的软连接
                    ln abc cde 建立abc的硬连接,

2. 软链接与硬链接的区别(通俗):
                    硬链接可认为是一个文件拥有两个文件名;而软链接则是
                    系统新建一个链接文件,此文件指向其所要指的文件

3. 软链接与硬链接的区别(讲解):
连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows下的快捷方式。
    不可以对文件夹建立硬连接的,我们通常用的还是软连接比较多。     

eg:
    ln -s source dist        # 建立软连接
    ln source dist            # 建立硬连接
    删除符号链接
    rm -rf   symbolic_name   注意不是rm -rf   symbolic_name/


作者: java    时间: 2018-1-3 19:32
本帖最后由 java 于 2018-9-26 16:22 编辑

命令行中打开文件目录
nautilus .

linux sort,uniq,cut,wc命令详解  https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858385.html

//查看进程所在路径

ps -aux| grep nginx
返回后 master后就是,如果路径不全,可根据返回的pid查看

ll /proc/13360



导出日志 中的部分日志 到新文件

tail -n 10 access.log > test.log

> 重写
>> 追加

新建文件 touch test.log
将新文件压缩打包

tar zcvf test.log.tar.gz test.log   #打包后,以gzip压缩
从远程复制到本地

scp root@192.168.42.184:/usr/local/openresty/nginx/logs/test.log.tar.gz ~/code/dataAnalysis/

本地解压

tar zxvf test.log.tar.gz
解压到指定目录 :
保证my-task目录存在不存在则先建好 mkdir my-task
tar -zxvf ./my-task.tar.gz -C ./my-task/

//日志文件分析
1.查询出现特定内容的头10行
grep "GET /cache/global/img/gs.gif HTTP/1.0" access.log | head -10
2.查询出现特定内容的最新10行
grep "GET /cache/global/img/gs.gif HTTP/1.0" access.log | tail -10

3.查询出现特定内容的出现次数
grep "GET /cache/global/img/gs.gif HTTP/1.0" access.log | wc -l
如果在只是想匹配模式的上下几行,grep可以实现。

$grep -5 'parttern' inputfile //打印匹配行的前后5行

$grep -C 5 'parttern' inputfile //打印匹配行的前后5行

$grep -A 5 'parttern' inputfile //打印匹配行的后5行

$grep -B 5 'parttern' inputfile //打印匹配行的前5行








作者: java    时间: 2018-1-3 19:34
本帖最后由 java 于 2018-1-8 12:02 编辑

查看网络端口占用并关闭相关进程  (加上sudo 否则一些进程名称会显示 -)
sudo netstat -apnt | grep 25



systemctl status exim4
systemctl disable exim4

常见参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到


查找进程执行的文件。ps aux | grep 4874

查看进程开了哪些端口:

sudo netstat -nap |grep 20926(pid)




作者: java    时间: 2018-1-4 14:41
linux用户管理
  1. 用户管理文件
  2. /etc/passwd
  3. /etc/shadow 负责所有用户的密码


  4. 添加用户:
  5. useradd user1

  6. 切换用户并修改密码
  7. su user1
  8. password user1

  9. 删除用户方法
  10. userdel -r user1 #常用的选项是-r,它的作用是把用户的主目录一起删除

  11. useradd一个用户后,/etc/passwd文件增加一行,相关含义如下:
  12. cat /etc/passwd
  13. root:x:0:0:root:/root:/bin/bash
  14. ...
  15. user1:x:1000:1000::/home/user1:/bin/bash
  16. imnotroot:x:0:0::/home/imnotroot:/bin/bash
  17. [用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
  18. 其中:
  19. ⒈[用户名]是passwd文件里各记录行唯一的有”唯一性”要求的域。也就是说每一行的第一个区域的内容都不能相同,其它区域就无所谓了。
  20. ⒉[密码]区域在以前,保存着一个经过不可逆的哈希算法进行DES加密的13位字符,但不包括单引号和冒号。这13位字符中,前两位是密钥,在加密的 时候随机生成的。由于这个字符串不包括单引号,所以以前有一种不修改密码又禁止用户登录的方式就是在密码前面加一个单引号。值得注意的是,现在由于使用了 shadow口令,在密码区域只有一个x字符。
  21. ⒊[UID]虽然是系统用来标志文件归属,确定各种权限的标志,但这个区域的内容并不要求唯一的。比较常见而又与安全问题相关的一个例子是有多个 UID和GID均为0的用户帐号。注意到在该文件最后一行还有一个UID和GID为0的用户imnotroot,虽然它声称自己不是root,但是它却有 和root完全相同的权限,因为系统并非根据[用户名],而是根据UID和GID来分用户的权力的。所以,这种情况无疑为系统埋下了安全的炸弹。但是,当 imnorroot做锁定屏幕等操作的时候,如果它的密码和root的不一样,它将无法解锁,因为系统只是查到第一个UID为0的用户(自然是root) 后,就不在往下查找了——它当UID也是唯一的。
  22. ⒋[GID]用户默认的组ID,这个ID可以在文件/etc/group里查到对应的组名。
  23. ⒌[身份描述]:就是用户的身份说明,默认的是无任何说明,可人工添加。
  24. ⒍[主目录]:用户的主目录,可以使用前面介绍的命令修改。
  25. ⒎[登录shell]:用户登录时系统提供的shell,请参考前面的有关内容。
  26. <注意>:[UID]和[GID]小于500的一般都是系统自己保留,不做普通用户和组的标识的,所以新增加的用户和组一般都是UID和GID大于500的

  27. 密码管理文件/etc/shadow
  28. 与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。
  29. root:$6$Xsb.ZUst$4VFUAPF//n4V01Fh//Z3DhNGaGl6a5Wx2jExLqjlPIUMr4FOBsoMwLLrAM5wIccGo/IV1UDAFc7tyB5pgFgUD.:17360:0:99999:7:::
  30. daemon:*:17274:0:99999:7:::
  31. 格式如下:
  32. 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

  33. 组管理文件
  34. /etc/group
  35. /etc/gshadow 是上者的加密信息文件

  36. 将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不 同的组。当一个用户同时是多个组中的成员时,
  37. 在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
  38. 用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:
  39. cat /etc/group
  40. root:x:0:root,linuxsir
  41. daemon:x:2:root,bin,daemon
  42. 组名:口令:组标识号:组内用户列表
  43. 组名:组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  44. 口令:口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
  45. 组标识号:组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
  46. 组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
  47. 说明:
  48.    我们以root:x:0:root,linuxsir 为例: 用户组root,x是密码段,表示没有设置密码,GID是0,root用户组下包括root、linuxsir以及GID为0的其它用户。
复制代码

作者: java    时间: 2018-1-5 09:27
子进程 已安装 post-installation 脚本 返回错误状态 1,dpkg: 处理软件包 python-crypto (--configure)时出错: 该软件包正处于非常不稳定的状态;
错误及解决办法如下:
问题1:
dpkg: 处理软件包 redis-server (--configure)时出错:
子进程 已安装 post-installation 脚本 返回错误状态 1
正在处理用于 libc-bin (2.23-0ubuntu3) 的触发器 ...
正在处理用于 systemd (229-4ubuntu10) 的触发器 ...
正在处理用于 ureadahead (0.100.0-19) 的触发器 ...
在处理时有错误发生:
redis-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
  1. zhangw@zhangw-g470:~$ sudo rm /var/lib/dpkg/info/redis-server.*
  2. #删除掉目录下有关redis-server(根据dpkg报错提示更改软件包名)的所有文件,感觉这里应该是安装脚本,不删除旧的的话,新安装的包会带新的脚本过来,删除掉旧的即可
复制代码
问题2:
dpkg: 处理软件包 python-crypto (--configure)时出错:
该软件包正处于非常不稳定的状态;
您最好在配置它之前,先重新安装它
在处理时有错误发生:
python-crypto
E: Sub-process /usr/bin/dpkg returned an error code (1)
  1. #解决这个问题需要备份dpkg下的info,然后自己创建一个新的info,然后更新,再把新的info里的内容拷贝到旧的里面,旧的再改成info,删除自己添加的
  2. zhangw@zhangw-g470:~$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old
  3. zhangw@zhangw-g470:~$ sudo mkdir /var/lib/dpkg/info
  4. zhangw@zhangw-g470:~$ sudo apt-get update
  5. zhangw@zhangw-g470:~$ sudo apt-get -f install  
  6. zhangw@zhangw-g470:~$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old   
  7. zhangw@zhangw-g470:~$ sudo rm -rf /var/lib/dpkg/info  
  8. zhangw@zhangw-g470:~$ sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info   
  9. zhangw@zhangw-g470:~$
复制代码



作者: java    时间: 2018-1-12 19:19
本帖最后由 java 于 2018-1-12 19:24 编辑

查看DNS地址
cat /etc/resolv.conf

指定后面的域名服务器 反向解析
nslookup -qt=ptr 192.168.134.117 192.168.12.13

作者: java    时间: 2018-3-29 16:15
本帖最后由 java 于 2018-4-17 16:15 编辑

压缩解压
.tar.xz文件

$xz -d ***.tar.xz

$tar -xvf  ***.tar




压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip

总结
1、*.tar 用 tar –xvf 解压
2、*.gz 用 gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用 bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用 uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用 unrar e解压
9、*.zip 用 unzip 解压


作者: doraemon    时间: 2018-6-2 23:40
1. 通常查找出错误日志 cat error.log | grep 'nick' , 这时候我们还有个需求就是输出当前这个日志的前后几行:

cat error.log | grep -C 5 'nick' 显示file文件里匹配foo字串那行以及上下5行
cat error.log | grep -B 5 'nick' 显示foo及前5行
cat error.log | grep -A 5 'nick' 显示foo及后5行




欢迎光临 firemail (http://www.firemail.wang:8088/) Powered by Discuz! X3