自己在使用linux时候的总结,不定时更新
linux
基本指令
cp:
cp -rf /var/cos/* /root
把var/cos下所有东西拷贝到root下scp:
scp [-r或者其他参数][文件名或文件夹名] [root@IP:/文件路径]
跨机器传输新建文件夹:单级:
mkdir [文件名]
多级:mkdir -p [文件名]
创建文件:
touch [文件名+扩展名]
,rm [文件名]
移动文件:
mv
删除文件:单个文件:
rm [文件名]
(删文件夹要rmdir [文件名]
) 删除目录及目录所有文件和子目录:rm -rf [文件名]
查看文件类型:
file [文件名]
查找指令:
- find:
find -name/-type filename
find -type f -mmin -10
所有过去10分钟更新过的普通文件,不加-type f
则搜索普通文件+特殊文件+目录 - locate:
locate
是find -name
的另外一种写法locate
快很多,因为只搜索/var/lib/locatedb
,这个数据库中包含了本地所有文件信息locate /etc/sh
,搜索etc下所有sh开头的文件locate ~/m
,搜索所有m开头的文件locate -i ~/m
,用户主目录下所有m开头的文件,并且忽略大小写 - whereis,只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略所有信息则返回所有信息
- which,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果,可以看到某个命令是否存在,以及执行的到底是哪个位置的命令
- 总结:which 查看可执行文件的位置
whereis 查看文件的位置
locate 配合数据库查看文件位置
find 实际搜寻硬盘查询文件名称
- find:
查找带某个字符的所有文件:
grep -rn "hello,world!" *
* : 表示当前目录所有文件,也可以是某个文件名
-r 是递归查找
-n 是显示行号
-R 查找所有文件包含子目录
-i 忽略大小写
find -type f -name '*.php' | xargs grep 'GroupRecord'
xargs配合grep查找修改权限:
chmod [-cfvR][--help] [--version][文件名]
参数详解:mode : 权限设定字串,格式如下 : [ugoa…][[+-=][rwxX]…][,…],其中 u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。
-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
其中ll(ls -l)可以看到,r-读(4),w-写(2),x-执行(1),rw—r—r代表权限644,rwxrw—r代表权限是764,其中7表示所有者对应的权限,6是表示所属组的用户权限,4表示其他用户,所以修改权限最直接的指令就是
chmod 777 [dir]
nl [dir]
(读取file参数)计算输入中的行号
about network:
重启:
service network restart(centos),/etc/init.d/networking restart(debian)
查看:
systemctl status firewalld.service
或者firewall-cmd--state
关闭:
systemctl stop firewalld.service
禁止开机启动:
systemctl disable firewalld.service
(这里换成其他也可以,比如network.service
)
sz&rz:(假若没有则安装)
yum install -y lrzsz
具体操作:
sz filename
发送到本地rz
上传文件cron:cron服务是Linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:
/sbin/service crond start
(开机自启在/etc/rc.d/rc.local
脚本中加入/sbin/service crond start
)/sbin/service crond stop
/sbin/service crond restart
/sbin/service crond reload
编辑:
crontab -e
,删除:crontab -r
E:
echo "1 1 * * * command" >> /var/spool/cron/root
中间五个分别是分时日月周,*/10分钟的话,10分钟执行一次。10-23/2小时的话,上午十点到晚上23点每两个小时执行一次ln:
ln [选项][参数]
链接指令。其中选项s常用,其他的见http://man.linuxde.net/ln ,-s或–symbolic:对源文件建立符号连接,而非硬连接,如果不打参数默认硬链接。E:将目录
/usr/mengqc/mub1
下的文件m2.c链接到目录/usr/liu
下的文件a2.c:cd /usr/mengpc
ln /mub1/m2.c /usr/liu/a2.c
tar:
tar (选项)(参数)
选项(部分):
-d:记录文件的差别;
-x或–extract或–get:从备份文件中还原文件;
-t或–list:列出备份文件的内容;
-z或–gzip或–ungzip:通过gzip指令处理备份文件;
-Z或–compress或–uncompress:通过compress指令处理备份文件;
-f<备份文件>或–file=<备份文件>:指定备份文件;
-v或–verbose:显示指令执行过程;
-r:添加文件到已经压缩的文件;
-u:添加改变了和现有的文件到已经存在的压缩文件;
-j:支持bzip2解压文件;
-v:显示操作过程;
-l:文件系统边界设置;
-k:保留原有文件不覆盖;
-m:保留文件不被覆盖;
-w:确认压缩文件的正确性;E:
压缩:
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 //解压zipnetstat:
netstat -an
“-a”选项意在显示所有连接,当不附加”-n”选项时,它显示的是本地计算机的netbios名字+端口号。而加了”-n”选项后,它显示的是本地IP地址+端口号。重新动态获取IP:
dhclient -r /释放IP
然后dhclient
查看进程:
ps -ef | grep httpd
(检查httpd进程是否存在)参数详解:ps:将某个进程显示出来
-e:显示所有进程
-f:全格式
| :管道命令,ps与grep同时执行
grep(Global Regular Expression Print):查找,强大的文本搜索工具,使用正则表达式搜索文本并把匹配的行打印出来cat /proc/进程号/maps
查看虚拟地址空间E:假如现在正在mv文件但是没有进度条,可以ps -ef | grep mv来看是否移动完了
杀死进程:
killall 进程名
查看端口:
lsof -i:端口号
查看CPU信息:
cat /proc/cpuinfo
# 查看CPU信息,可以看到核心数查看系统负载:
cat /proc/loadavg
# 查看系统负载查看CUP数:
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
查看内核数:
cat /proc/cpuinfo |grep "processor"|wc -l
具体看每个cpu对应的核心:
cat /proc/cpuinfo | grep physical | uniq -c
查看CPU型号和数量:
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看磁盘使用情况:
df -h
查看物理机du -h
查看当前目录下的空间使用情况,这条指令会遍历
查看内存:
free
默认kb,后面加上参数-m就可看mbtop
类似任务管理器,查看运行程序vmstat
主要参数free空闲,buff已用缓冲数目,cache已用缓存数目vgdiplay
查看卷组名称及卷组使用情况lvdisplay
当前逻辑卷空间状态LVM
扩容参考网址:https://blog.csdn.net/u012439646/article/details/73380197
- 擦除网卡缓存:
ip addr flush eth0
- 显示已加载的系统的模块:
lsmod
查看版本:
cat /etc/redhat-release
(目测是隐藏文件)或者uname -a(centos)
或者lsb_release -a
查看应用:
rpm -qa | grep [软件名]
或rpm -q [软件名]
/dev/sda3
表示的意思:/dev是表示设备,访问外部设备的端口(其实就是文件)/dev/hd[a-t]:IDE
设备,hda,hdb表示harddisk,a表示第一个盘等等/dev/sd[a-z]
:SCSI设备和SATA设备,a表示第一个,以此类推,1-4分给主分区。其他的是扩展分区/dev/fd[0-7]
:标准软驱/dev/md[0-31]
:软raid设备/dev/loop[0-7]
:本地回环设备/dev/ram[0-15]
:内存linux下各个文件目录的意思:https://www.jb51.net/LINUXjishu/32180.html
查看系统时间并且修改:
查看:当前:data
,硬件时间:hwclock
修改:date -s “2018-08-24 10:45:10”
同步:hwclock --systohc
修改时区:
timedatectl list-timezones |grep Shanghai
- -结果Asia/Shanghai
timedatectl set-timezone Asia/Shanghai
安装软件
Debian下
sudo:进入root:su,输入密码,然后apt-get install sudo,这样可以使用sudo
vim:安装过程中如果遇到下面
遇到的问题
中第二个问题则先解决,然后apt-get update&apt-get upgrade
出现需要先安装common
,则就是apt-get remove vim-common
,然后再apt-get install vim
参考链接:https://www.cnblogs.com/drfxiaoliuzi/p/4143933.html配置源的参考链接:https://blog.csdn.net/w6280190/article/details/80840728
gg:跳到第一行
shift+g:跳到最后一行
ddp:光标所在行与下一行进行交换
xp:光标所在的字符与后面一个字符交换
gcc:
apt-get install build-essential
这个命令会将所有c语言的开发包安装好,包含了gcc make gdb和lib函数库很多工具,build-essential是c语言的开发包apt命令:
apt-get install --reinstall 软件名
重新安装
apt-get remove 软件名
卸载软件
apt-get clean
清除deb包
Centos6.6下
安装Mysql
首先查看是否有旧版本
rpm –qa | grep -i mysql 或者 yum list installed | grep mysql
删除系统自带或者已安装版本
yum -y remove mysql-libs.x86_64
然后给CentOS添加rpm源
wget dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
yum localinstall mysql-community-release-el6-5.noarch.rpm
yum repolist all | grep mysql
yum-config-manager –disable mysql55-community
yum-config-manager –disable mysql56-community
yum-config-manager –enable mysql57-community-dmr
yum repolist enabled | grep mysql
安装mysql
yum install mysql-community-server
启动mysql
service mysqld start
查看mysql是否自启动,并且设置开启自启动
chkconfig –list | grep mysqld
chkconfig mysqld on
mysql安全设置
mysql_secure_installation
注意centos6没有systemd,所以没有systemctl命令,只有service命令,查看状态可以service mysqld status
遇到的问题
Debian下
- 运行脚本:先要有执行权限:
chmod u+x [文件名]
,执行:bash [文件名.sh]或者./[文件名]
- apt-get install之后404 not found的话那就直接先update一下
- 能ping通自己和网关,但是上不去网可能是路由表里面没有网关地址,route -n就可以查看,没有网关的话就直接添加就行:
route add defualt gw X.X.X.X
这样再去看路由表里面应该就有网关,可以上网了
ping通自己的ip,ping不通网关,要不就是自己的网关设置错了,要不就是IP冲突,改网关子网掩码和IP试试,自己虚拟机的debian非常奇怪,网关居然是192.168.213.2,IP没有冲突但是网关设置成192.168.1.1就不行,子网掩码要设成24(这个问题有待商榷,这个可能是错误的,那台Debian有些问题)
ifconfig看不到eth0,ifconfig -a可以看到,很可能是没有设置MAC地址造成,执行下面几条命令,如果是新建虚拟机的话,造成原因可能是路由器
ifconfig eth0 down
ifconfig eth0 hw ether 00:00:AA:BB:CC:DD#随便写一个就行
ifconfig eth0 up
/etc/init.d/network restart
这样就解决了
Debian安装缺少光盘源并且一直检测cdrom,打开/etc/apt/sources.list(最好先备份)文件,注释掉cdrom那一行,然后添加上163源或者其他源,然后再执行apt-get update和apt-get upgrade更新下deb仓库,这样以后再使用apt-get安装时就不会再搜寻cdrom了
163源:deb http://mirrors.163.com/debian/ squeeze main non-free contrib
deb http://mirrors.163.com/debian/ squeeze-proposed-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ squeeze main non-free contrib
deb-src http://mirrors.163.com/debian/ squeeze-proposed-updates main non-free contribsohu:deb http://mirrors.sohu.com/debian/ lenny main non-free contrib
deb http://mirrors.sohu.com/debian/ lenny-proposed-updates main non-free contrib
deb-src http://mirrors.sohu.com/debian/ lenny main non-free contrib
deb-src http://mirrors.sohu.com/debian/ lenny-proposed-updates main non-free contrib试了上面的源感觉不行,所以重新找的源:https://blog.csdn.net/yjk13703623757/article/details/78943345/
其他源:
jessie:deb http://mirrors.163.com/debian/ jessie main non-free contrib
deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
CentOS7下
Ubuntu下
Ubuntu更新源,可用源:
163源:#163 guangdong
deb http://mirrors.163.com/ubuntu/trusty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/trusty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/trusty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/trusty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/trusty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/trusty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/trusty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/trusty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/trusty-backports main restricted universe multiverse
阿里源:
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted
deb http://mirrors.aliyun.com/ubuntu/xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/xenial main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/xenial-updates main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/xenial universe
deb http://mirrors.aliyun.com/ubuntu/xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/xenial-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/xenial-security main restricted multiverse universe
deb http://mirrors.aliyun.com/ubuntu/xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/xenial-security multiverse
初始安装的时候设置root密码是通过
sudo passwd root
然后输入密码既可以,另外修改hostname和静态IP必须要重启一下才能生效
配置ssh使其在远程能直接root登录
apt-get install ssh
/etc/init.d/ssh start #启动
vim /etc/ssh/sshd_config #找到PermitRootLogin without-password修改为PermitRootLogin yes
/etc/init.d/ssh restart
常见脚本
centos统计ping输出日志的脚本:
1
2
ping 10.121.82.94 -c 172800 | awk '{ print $0"\t" strftime("%H:%M:%S",systime()) }' > /tmp/ping94.log ¢os7中根据文件大小排序以及jenkins配置每周删除一次jobs日志信息:https://blog.csdn.net/u013066244/article/details/70232050
shell统计某个目录文件数量:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
cd /home/a //切换到要统计文件数目的目录
fcnt=0
dcnt=0
frcnt=0
fwcnt=0
fxcnt=0
for file in *
do
if [ -f $file ];then
let fcnt+=1
if [ -r $file ];then
let frcnt+=1
fi
if [ -w $file ];then
let fwcnt+=1
fi
if [ -x $file ];then
let fxcnt+=1
fi
elif [ -d $file ];then
let dcnt+=1
fi
done
echo "There are $fcnt files in $PWD"
echo -e "\tThere are $frcnt readable files in $PWD"
echo -e "\tThere are $fwcnt writeable files in $PWD"
echo -e "\tThere are $fxcnt executeable files in $PWD"
echo "There are $dcnt directories in $PWD"