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 //查看内核版本
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位:
//////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////数据库//////// 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 源 目标
文件夹加 -r
////////查找文件内容///////////
查找目录下的所有文件中是否含有某个字符串
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
终端- 补齐[TAB]
- 任务终止[CTRL+C]
向进程发送SIGINT,通知任务终止 - 后台任务[命令 &]
wps &后台运行wps - 输出重定向[命令 > 文件]
ping 192.168.41.1 >/dev/null 把ping命令的输出重定向到/dev/null - 管道[命令1 | 命令2 ]
前一个命令的标准输出作为后边一个命令标准输入
ls -l | wc -l计算当前目录下有多少个文件或目录 - 任务挂起[CTRL+Z]
挂起后的任务停止执行 - 操作挂起的任务或后台执行的任务
- jobs查看挂起的任务或后台运行的任务
- fg命令把它切换为前台任务
- bg命令把它切换为一个后台任务
文件系统操作各个目录的区别- /bin 二进制可执行命令
- /opt 额外安装的可选应用程序包所放置的位置. wps就是装在这里
- /dev 设备特殊文件
- /etc 全局系统管理和配置文件 。每个用户又有自己的配置文件目录,在~/.config目录。
- /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~表示
- /lib 系统库目录
- /boot 内核和引导的目录。
- /sbin 系统管理命令
- /tmp 临时文件目录
- /root root用户的家目录
- /proc 虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
- /var 某些大文件的溢出区,比方说各种服务的日志文件
- /usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
- /usr/bin 众多的应用程序
- /usr/sbin 超级用户的一些管理程序
- /usr/include linux下开发和编译应用程序所需要的头文件
- /usr/lib 系统库目录和第三方库目录
- /usr/local/bin 本地增加的命令
- /usr/local/lib 本地增加的库
相对路径与绝对路径绝对路径以/打头, 其他都是相对路径。
.和..是比较特殊的两个相对路径。
软链接ln -sf 源文件路径 目标链接路径
注意:源文件路径如果是相对路径时,它相对的位置是从目标链接所在路径计算。
命令是什么命令也是一个普通的可执行程序或者脚本,但它可以在不输入程序完整路径的情况下就能调用到。
终端可识别的命令除去一小部分shell内置命令(如cd), 其他命令都是根据PATH变量设置的路径搜索的可执行程序。
通过修改PATH可以增加命令搜索的路径。
增加一个新命令有几种方式
- 把可执行程序所在目录加到PATH
- 要么直接把该程序拷贝到已经在PATH中的路径中去.如/bin/,/usr/bin,/usr/local/bin
- 通过别名alias来设置,如常用的ll命令就是ls命令的一个别名。
遇到一个命令,可以通过man command 或者command --help来获取相关帮助。
可以通过which来查找一个命令所在的位置。如which ls可以发现ls命令在/bin/ls
非常常用的命令- ls列出当前目录下的文件,
-l列表形式列出
-r反向排序
ls -al列出所有,包括隐藏文件
ls -alt按时间顺序列出所有文件
ls -alS按大小排序列出所有文件
ll相当于ls -alF - cd
cd -回到上一个目录 - touch创建一个文件。如果文件已经存在,更新文件的修改时间。
- mv移动文件或目录
- cp -av 复制
- rm -rf 删除文件或目录
- pwd 获取当前目录
- mkdir rmdir 删除目录
- cat 读取文件内容
- tail 读取文件尾部内容,tail -f可以动态显示文件变化
- more和less 大文件读取, less可以上下滚动
- file 获取文件类型
- exit 退出
- du -h -d 1 查看当前目录容量
用户和权限管理员和普通用户root 用户在系统内是属于独一无二的超级管理员,拥有至高无上的权限(皇帝)。
普通用户的权限则受到很多限制(平民)。
普通用户只能访问自己的东西,既不能访问其他普通用户的文件,更不能访问root用户的文件。
权限又根据用户分为拥有者 ,组用户,其他用户,所以一个文件或目录的权限最大是777。
相关命令- su root 切换到root用户。
- sudo ls /root 以其他用户身份执行一条命令。默认以root用户执行
- chown user ./wps 修改一个文件的拥有者为user.
- chmod 777 ./wps 修改一个文件的权限为777
u,g,o,a分别代表拥有者,组,其他用户,所有用户
可以只给某个用户增加或削减权限,如
chmod u+x ./wps给wps文件的拥有者增加可执行权限
chmod o-w ./wps去掉wps文件的其他用户的可读权限 - passwd wps 修改wps用户的密码。如果不加参数,就修改当前用户的密码
进程管理进程可以认为是程序执行时的一个实例。可以用pid标识同一个程序的不同实例。每一个进程的pid都不相同.
如何获取一个后台进程的pid- ps -aux获取当前系统所有运行中的进程
- ps -aux | grep wps 输出如下
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDz 6744 0.6 0.6 1021176 67908 ? Sl 16:31 1:11 gedit /home/z/Desktop/无标题文档 2 - pidof wps 根据进程名获取某个程序的pid
如何杀掉一个进程- killall wps 杀掉所有进程名为wps的程序, 程序正常退出, 但有时无法相应。对应信号为TERM
- killall -9 wps 杀掉所有进程名为wps的程序,强杀, 程序100%会退出。对应信号为SIGKILL
- kill 100 杀掉进程id为100的程序
- kill -9 100 强制杀掉进程id为100的程序
一些常用命令行工具获取系统信息- df -h 查看系统硬盘剩余
- top 类似任物管理器,只能看,杀进程得配合kill
- htop 同上,界面更好看一点
- free -h 获取当前内存使用情况
- uname -a 获取当前系统内核,架构等信息
- lsb_release -a 获取操作系统等信息
- lscpu 列出cpu信息
- cat /proc/cpuinfo 获取详细的cpu信息
- nproc 获取当前cpu核心数
- ifconfig 获取ip
- ping 192.168.41.1 ping命令
关机,重启- halt 关机
- reboot 重启
- shutdown 关机
- init 0 关机,init 6重启
压缩解压- tar zcvf office6.tar.gz ./office6压缩./office6目录为tar.gz格式.
-z代表gzip
-j代表bzip
-J代表xz - tar xvf office6.tar.gz 解压一个tar包到当前目录,解压可以不指定压缩格式
增加-C参数解压到指定目录。
远程操作,拷贝,需要安装openssh-server- ssh user@ip命令行连接到远程机器
- scp filename user@ip:path 传输本地文件到远程的path目录,
scp user@ip:path filename 修改参数顺序可以把远程文件传输到本地
scp -r dir user@ip:path -r参数可以传输文件夹
查找文件和内容- find . -name "wps"查找当前目录文件名为filename的文件
- grep "wps" . -rn查找当前目录下内容包含wps的文件
其他- nano filename 命令行文本编辑器,简单容易上手
- xdg-open filename使用系统关联的程序打开一个文件
作者: 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用户管理- 用户管理文件
- /etc/passwd
- /etc/shadow 负责所有用户的密码
- 添加用户:
- useradd user1
- 切换用户并修改密码
- su user1
- password user1
- 删除用户方法
- userdel -r user1 #常用的选项是-r,它的作用是把用户的主目录一起删除
- useradd一个用户后,/etc/passwd文件增加一行,相关含义如下:
- cat /etc/passwd
- root:x:0:0:root:/root:/bin/bash
- ...
- user1:x:1000:1000::/home/user1:/bin/bash
- imnotroot:x:0:0::/home/imnotroot:/bin/bash
- [用户名]:[密码]:[UID]:[GID]:[身份描述]:[主目录]:[登录shell]
- 其中:
- ⒈[用户名]是passwd文件里各记录行唯一的有”唯一性”要求的域。也就是说每一行的第一个区域的内容都不能相同,其它区域就无所谓了。
- ⒉[密码]区域在以前,保存着一个经过不可逆的哈希算法进行DES加密的13位字符,但不包括单引号和冒号。这13位字符中,前两位是密钥,在加密的 时候随机生成的。由于这个字符串不包括单引号,所以以前有一种不修改密码又禁止用户登录的方式就是在密码前面加一个单引号。值得注意的是,现在由于使用了 shadow口令,在密码区域只有一个x字符。
- ⒊[UID]虽然是系统用来标志文件归属,确定各种权限的标志,但这个区域的内容并不要求唯一的。比较常见而又与安全问题相关的一个例子是有多个 UID和GID均为0的用户帐号。注意到在该文件最后一行还有一个UID和GID为0的用户imnotroot,虽然它声称自己不是root,但是它却有 和root完全相同的权限,因为系统并非根据[用户名],而是根据UID和GID来分用户的权力的。所以,这种情况无疑为系统埋下了安全的炸弹。但是,当 imnorroot做锁定屏幕等操作的时候,如果它的密码和root的不一样,它将无法解锁,因为系统只是查到第一个UID为0的用户(自然是root) 后,就不在往下查找了——它当UID也是唯一的。
- ⒋[GID]用户默认的组ID,这个ID可以在文件/etc/group里查到对应的组名。
- ⒌[身份描述]:就是用户的身份说明,默认的是无任何说明,可人工添加。
- ⒍[主目录]:用户的主目录,可以使用前面介绍的命令修改。
- ⒎[登录shell]:用户登录时系统提供的shell,请参考前面的有关内容。
- <注意>:[UID]和[GID]小于500的一般都是系统自己保留,不做普通用户和组的标识的,所以新增加的用户和组一般都是UID和GID大于500的
- 密码管理文件/etc/shadow
- 与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。
- root:$6$Xsb.ZUst$4VFUAPF//n4V01Fh//Z3DhNGaGl6a5Wx2jExLqjlPIUMr4FOBsoMwLLrAM5wIccGo/IV1UDAFc7tyB5pgFgUD.:17360:0:99999:7:::
- daemon:*:17274:0:99999:7:::
- 格式如下:
- 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- 组管理文件
- /etc/group
- /etc/gshadow 是上者的加密信息文件
- 将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段。每个用户都属于某个用户组;一个组中可以有多个用户,一个用户也可以属于不 同的组。当一个用户同时是多个组中的成员时,
- 在/etc/passwd文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组。
- 用户组的所有信息都存放在/etc/group文件中。此文件的格式是由冒号(:)隔开若干个字段,这些字段具体如下:
- cat /etc/group
- root:x:0:root,linuxsir
- daemon:x:2:root,bin,daemon
- 组名:口令:组标识号:组内用户列表
- 组名:组名是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
- 口令:口令字段存放的是用户组加密后的口令字。一般Linux系统的用户组都没有口令,即这个字段一般为空,或者是*。
- 组标识号:组标识号与用户标识号类似,也是一个整数,被系统内部用来标识组。别称GID.
- 组内用户列表:是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。
- 说明:
- 我们以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)
- zhangw@zhangw-g470:~$ sudo rm /var/lib/dpkg/info/redis-server.*
- #删除掉目录下有关redis-server(根据dpkg报错提示更改软件包名)的所有文件,感觉这里应该是安装脚本,不删除旧的的话,新安装的包会带新的脚本过来,删除掉旧的即可
复制代码问题2:
dpkg: 处理软件包 python-crypto (--configure)时出错:
该软件包正处于非常不稳定的状态;
您最好在配置它之前,先重新安装它
在处理时有错误发生:
python-crypto
E: Sub-process /usr/bin/dpkg returned an error code (1)
- #解决这个问题需要备份dpkg下的info,然后自己创建一个新的info,然后更新,再把新的info里的内容拷贝到旧的里面,旧的再改成info,删除自己添加的
- zhangw@zhangw-g470:~$ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info_old
- zhangw@zhangw-g470:~$ sudo mkdir /var/lib/dpkg/info
- zhangw@zhangw-g470:~$ sudo apt-get update
- zhangw@zhangw-g470:~$ sudo apt-get -f install
- zhangw@zhangw-g470:~$ sudo mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old
- zhangw@zhangw-g470:~$ sudo rm -rf /var/lib/dpkg/info
- zhangw@zhangw-g470:~$ sudo mv /var/lib/dpkg/info_old /var/lib/dpkg/info
- 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://firemail.wang:8088/) |
Powered by Discuz! X3 |