linux命令学习摘记
20180102
20181018
*********************---LINUX命令---**********************
使用su root命令切换至root用户
然后 chmod 777 文件名 修改文件的权限,权限设置为最大权限即所有用户都具有可读可写可执行的权限(其中的777下面做解释)
root密码删除
已经登录进去后,如何删除root密码
vi /etc/passwd
root:x:0:0:root:/root:/bin/bash
...
删除“root:x:0”中的x,保存即可。再重启用root登录就没有密码了
装载 CD-ROM 驱动器。
mount /dev/cdrom /mnt/cdrom
用df命令看一下光驱挂载到哪儿了
+++++++++++++++++++++++解压缩++++++++++++++++++++++++++++
解压缩安装程序。
tar zxpf /mnt/cdrom/VMwareTools-x.x.x-yyyy.tar.gz
tar zxvf *****
压缩用
tar zcvf ****
压缩zip文件命令,前面是压缩后的命令,后面是要压缩的文件夹名
zip -r a.zip a
查看wwwroot.zip里面的内容
unzip -v wwwroot.zi
直接解压
unzip wwwroot.zi
把mydata.zip解压到mydatabak目录里面
unzip mydata.zip -d mydatabak
{源码包解压报错解决}
[root@localhost home]# tar -jxvf pciutils-3.1.4.tar.bz2
tar (child): bzip2: Cannot exec: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
缺少bzip2 运行yum -y install bzip2
.tar.bz2文件解压命令
从网络上下载到的源码包, 最常见的是 .tar.gz 包, 还有一部分是 .tar.bz2包
要解压很简单 :
.tar.gz 格式解压为 tar -zxvf xx.tar.gz
.tar.bz2 格式解压为 tar -jxvf xx.tar.bz2
# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思
rar文件
打包当前文件夹为1.rar
rar a 1.rar ./
解压缩1.rar到1目录下
rar x 1.rar 1\
+++++++++++++++++++++++++++++++++++++++++++++++++
[root@localhost Desktop]# tar jxvf fcitx-3.4.2.tar.bz2
[root@localhost Desktop]# cd /home/new/Desktop/fcitx-3.4.2
[root@localhost fcitx-3.4.2]#./configure --prefix=/opt/fictx
[root@localhost fcitx-3.4.2]#make
[root@localhost fcitx-3.4.2]#make install
linux删除目录很简单,很多人还是习惯用rmdir,不过一旦目录非空,就陷入深深的苦恼之中,现在使用rm -rf命令即可。
直接rm就可以了,不过要加两个参数-rf 即:rm -rf 目录名字
-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思
rm删除文件也可以。
[root@localhost home]# cp RTL8188EUS_OLD/ /root/
cp: omitting directory `RTL8188EUS_OLD/\'
cp: omitting directory `RTL8188EUS_OLD\' 报错处理:
因为该目录下还有目录,所以需要加递归参数-r
[root@localhost home]# cp -r RTL8188EUS_OLD /root
Ubuntu默认不支持命令ll
$ vim ~/.bashrc
alias ll=\'ls -l\' #加入此行
:加入后可能无法当场起作用,
执行该句: source ~/.bashrc
+++++++++++++++++++++++++++++++++++++++++++
如何查看已安装的CentOS版本信息
1)[root@localhost ~]# cat /proc/versio
Linux version 2.6.18-194.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Fri Apr 2 14:58:14 EDT 2010
2)
[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
3)cat /etc/redhat-release 跟head -n 1 /etc/issue显示结果一样!——“错误”
“后来发现两命令其实不一样,上次只是巧合,真正能显示发行版本的是前一个命令”
CentOS Linux release 7.3.1611 (Core)
查看系统内核版本
[root@localhost ~]# uname -r
2.6.32-358.el6.x86_64
++++++++++++++++++++++进程操作++++++++++++++++++++++++
查看进程并从结果中搜索http字符 并剔除grep字符(grep显示行数加-n参数)
[jj@jj ~]$ ps -ef|grep http|grep -v gre
查看进程ps aux
进程树查看 pstree
kill用于进程pid
kill 1234 5678同时结束多个进程pid
kill -9强制结束进程
kill 和 killall 用法:
都是用来直接结束进程名
killall用于正运行的,可以杀死一组同名进程
[root@jj ~]# killall firefox第一次执行无提示
[root@jj ~]# killall firefox第二次执行提示没发现该进程了(因为第一次被结束了)
firefox: no process found
kill无所谓。
grep根据进程名筛选出pid号
[root@jj ~]# pgrep sshd
34344
34780
fuser 可以显示出当前哪个程序在使用磁盘上的某个文件、挂载点、甚至网络端口,并给出程序进程的详细信息.
显示使用某个文件的进程信息
fuser -um /dev/sda2
这个命令在umount的时候很有用,可以找到还有哪些用到这个设备了。
杀掉打开readme文件的程序
fuser -m -k -i readme
这里,会在kill之前询问是否确定。最好加上-v以便知道将要杀那个进程。
在使用fuser -km 就可以杀死进程,同时也可以使用交互式的-i参数,一个一个杀死。
查看指定端口被哪些进程占用( 或者fuser -v 22/tcp)
[root@localhost home]# fuser -v -n tcp 22
USER PID ACCESS COMMAND
22/tcp: root 1320 F.... sshd
root 1464 f.... sshd
root 2110 f.... sshd
root 2213 f.... sshd
查看指定服务的进程PID
[root@localhost dev]# fuser ssh/tc
h/tcp: 2213
查看22/21端口占用情况(两种,也可以把端口换成服务名协议名)
[root@localhost dev]# lsof -i tcp:22 (lsof -i:ssh)
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
hd 2213 root 3r IPv4 19648 0t0 TCP 10.58.9.80:ssh->10.58.9.20:55612 (ESTABLISHED)
[root@localhost dev]# lsof -i:21 (lsof -i:ftp)
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ftp 2581 root 3u IPv4 22006 0t0 TCP 10.58.9.80:40558->10.58.9.20:ftp (ESTABLISHED)
++++++++++++++++++Vim文本编辑器+++++++++++++++++++++
vi
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
强制保存只读类型文件(w后有一个空格)
:w !sudo tee %
搜索字符
/后面加搜索字符串,回车即可,搜索下一个按n,搜索上一个用N(shift+n)
复制粘贴
复制一行字符用yy,粘贴这一行用
++++++++++++++++nano++++++++++++++++++++++++++++++
比vi简单,容易操作,适合新手
ano 文件名“打开文件”
ctrl+x“选择保存y或者不保存n”y,继续回车确认文件名即可
ctrl+c“取消操作”
++++++++++++++++++++++++++++++++++++++++++++++++++
修改文件名(改名):mv 或者 rename
mv只能对单个文件重命名,rename专用于重命名(可以批量改名)
[root@localhost home]# mv rpm nano-2.3.1-10.e17.x86_64.rpm
rename
Linux 下的 rename 命令有两个版本:
C语言版本
Perl语言版本
其中,C语言版本的命令如下:
rename 原字符串 新字符串 文件名
-rw-r--r-- 1 root root 0 Nov 29 04:38 abc-01.jpg
-rw-r--r-- 1 root root 0 Nov 29 04:38 abc-02.jpg
-rw-r--r-- 1 root root 0 Nov 29 04:38 abc-03.jpg
-rw-r--r-- 1 root root 0 Nov 29 04:38 abc-04.jpg
[root@localhost idc]# rename a b *把当前目录下所有文件名中的a改成
-rw-r--r-- 1 root root 0 Nov 29 04:38 bbc-01.jpg
-rw-r--r-- 1 root root 0 Nov 29 04:38 bbc-02.jpg
-rw-r--r-- 1 root root 0 Nov 29 04:38 bbc-03.jpg
-rw-r--r-- 1 root root 0 Nov 29 04:38 bbc-04.jpg
[root@localhost idc]# rename _ - *把当前目录下所有文件名中的下划线 _ 改成横杠 -
[root@localhost home]# rename 123 456 idc/123.txt
用rename更改单个文件名,把当前目录下的idc文件夹里的123.txt文件名改成456.txt
Perl 语言版本的命令如下:
rename \'s/原字符串/新字符串/\' 文件名
+++++++++++++++++++++++++++++++++++++++++++++
eq 用于产生从某个数到另外一个数之间的所有整数
eq 是Linux 中一個預設的外部命令,一般用作一堆數字的簡化寫法,如
eq 1 10
便會出現
1
2
3
4
5
6
7
8
9
10
++++++++++++++++++++++++++++++++++++++++++++++.
创建文件
touch
用for批量创建文件
[root@localhost idc]# for i in `seq -w 10`; do touch stu\_$i\_linux.jpg; done
[root@localhost idc]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_01_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_02_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_03_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_04_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_05_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_06_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_07_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_08_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_09_linux.jpg
-rw-r--r-- 1 root root 0 Nov 29 05:54 stu_10_linux.jpg
++++++++++++++++++++++查看修改主机名++++++++++++++++++++
[root@localhost ~]# hostnamectl
Static hostname: abc
Icon name: computer-vm
Chassis: vm
Machine ID: bd5eb6eacd6b4078bc98bef769cbdb37
Boot ID: 606dea7151324f4586bc870e295041a6
Virtualization: vmware
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-514.16.1.el7.x86_64
Architecture: x86-64
[root@localhost ~]# hostnamectl set-hostname cba
[root@localhost ~]# cat /etc/hostname
cba
++++++++++++++++++网络+++++++++++++++++++
重启网卡
# service network restart
重启网络服务
[root@localhost ~]# systemctl restart network
开启网卡(ifup 网卡接口名)
[root@localhost ~]# ifup ens33
成功激活的连接(D-Bus 激活路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
禁用网卡
[root@localhost ~]# ifdown ens33
成功断开设备 \'ens33\'。
或者
ifconfig eth0 up //启用网卡eth0
ifconfig eht0 down //关闭网卡eth0
设置网卡开机自启动:
vi /etc/sysconfig/network-scripts/ifcfg-ens33(该系统文件为只读)
……
DEVICE=ens33
ONBOOT=yes(yes就是开机自启动了)
……
当上步没用时,于是在/etc/rc.d/rc.local文件中加入
ifup eth0
[root@jj jj]# nmtui (network management UI界面)
查看网卡驱动版本号以及支持哪些功能:ethtool -i 网卡名 如ethtool -i eth0
查看网卡驱动[root@hostname ~]# lspci |grep net
lspci -k每个设备后有驱动信息。
linux 重启网卡 Device eth0 has different MAC address than expected, ignoring 如何解决
应该是你的配置文件内的MAC地址和真实的MAC不一样造成的。
1。查看配置文件/etc/sysconfig/network-scripts/ifcfg-eth0 中的HWADDR 参数是什么
2. 用命令ifconfig etho, 看看其中的HWaddr是什么
3. 另外你的真实的MAC地址可以在机器启动时按F12 进入网络启动,看看本地的MAC地址是多少
把/etc/sysconfig/network-scripts/ifcfg-eth0 中的HWADDR 参数修正过来应该就可以了。你试一下吧!
ifconfig.me是个网址
http://ifconfig.me/
使用curl命令查看自己机器的外网i
[root@localhost ~]# curl ifconfig.me
115.236.100.3
[root@localhost /]# curl ifconfig.me/all
ip_addr: 115.236.100.3
remote_host:
user_agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.13.6.0 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
ort: 56569
lang:
connection:
keep_alive:
encoding:
mime: */*
charset:
via:
forwarded:
查询外网IP其他网址
curl icanhazip.com
curl ipinfo.io/i
curl ident.me
curl myip.dnsomatic.com
debian9.2.1中
/etc/network/interfaces文件中的dns-nameserver参数加s情况:
dns-nameserver不加s,重启网络后查看resolv.conf只能识别一个DNS地址;加了s代表可以添加多个DNS地址(但最多也只能3个DNS)
+++++++++++++++++++++++无线网络wireless+++++++++++++++++++
iwconfig
[root@localhost ~]# iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
+++++++++++++++++++++++包管理++++++++++++++++++++++++
查看到现在为止已经安装了哪些软件包。
rpm -qa
RPM包卸载
rpm -e 包名,注意,这里不需要加包的全名了,只需要加包名即可,Linux用数据库来维护这些包名
查询是否安装
rpm -q 包名
RPM包安装
rpm -ivh 包全名
选项:
-i(install) 代表安装
-v(verbose)代表显示详细信息
-h(hash) 显示进度
查询包中文件安装位置
rpm -ql 包名
查询系统文件属于哪个rpm包
rpm -qf 包名
-f查询文件属于哪个rpm包
查询软件包的依赖
rpm -qR 包名
其实yum命令自带了一个功能,可以自动批量解决本地安装rpm文件的dependencies依赖问题。
使用yum localinstall XXX.rpm 即可。
找不到lspci命令对应的安装包时可用下面命令
yum whatprovides 翻查命令是在哪个安装包中
yum whatprovides */命令名
[root@localhost home]# yum whatprovides * lspci
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: centos.ustc.edu.c
* extras: mirrors.cn99.com
* updates: mirrors.cn99.com
ciutils-3.5.1-2.el7.x86_64 : PCI bus related utilitie
Repo : base
Matched from:
Filename : /usr/sbin/lspci
++++++++++++++++++++++磁盘分区管理+++++++++++++++++++
输入 df -h,可以查看各分区的使用情况。其中,从左到右各列的内容依次是:
文件系统、总大小、已使用大小、剩余大小、使用率、挂载点。
输入du -sh,则可以查看当前文件夹所占空间。它的功能等同于 du . -sh。
而输入 du -sh 目录名,则可以查看指定目录的大小。
du -sh. 系统只显示当前文件夹所占用的总空间
查看硬盘和分区分布
[root@jj ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
da 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─cl-root 253:0 0 17G 0 lvm /
└─cl-swap 253:1 0 2G 0 lvm [SWAP]
r0 11:0 1 4.1G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
da 8:0 0 60G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
├─sda3 8:3 0 38.7G 0 part /
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 18.9G 0 part /home
r0 11:0 1 3.7G 0 rom /mnt
磁盘和分区详细信息用
fdisk -l
+++++++++++++++++++++++++++++++++++++++++++
修改分辨率(先xrandr查看显示器名称)
[jj@localhost network-scripts]$ xrandr
[jj@localhost network-scripts]$ xrandr --output Virtual1 --mode 1360x768
改分辨率
xrandr -s 1440x900
按照默认分辨率设置(800*600)
xrandr -s 0(0也可以改成1,2,3,4列表里的顺序)
+++++++++++++++++++++++++++++++++校准时间+++++++++++++++++++++++++++++++++
1.查看ntpd客户端有没有开机自启动
[root@localhost ~]# systemctl list-unit-files |grep ntpd
tpd.service enabled
tpdate.service enabled