基础 linux中设置环境变量和gcc/g++的include路径 1. 对所有用户有效在/etc/profile增加以下内容 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 export PATH =$PATH :$HOME /binC_INCLUDE_PATH=/usr/include/libxml2:/MyLib export C_INCLUDE_PATHCPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH :/usr/include/libxml2:/MyLib export CPLUS_INCLUDE_PATHLD_LIBRARY_PATH=$LD_LIBRARY_PATH :/MyLib export LD_LIBRARY_PATHLIBRARY_PATH=$LIBRARY_PATH :/MyLib export LIBRARY_PATH
2. 保存后在终端中输入下面的语句,以重启配置: 1 2 3 4 source /etc/profileecho $PATH echo $C_INCLUDE_PATH echo $CPLUS_INCLUDE_PATH
Linux内核tty设备 https://blog.csdn.net/huchuan1985/article/details/46699037
1. 控制台 系统控制台/dev/console /dev/console是系统控制台,是与操作系统交互的设备。
当前控制台: /dev/tty 这是应用程序中的概念,如果当前进程有控制终端(Controlling Terminal),那么/dev/tty就是当前进程控制台的设备文件。
/dev/tty会映射到当前设备(使用命令”tty”可以查看它具体对应哪个实际物理控制台设备)
如果在控制台界面下(即字符界面下)那么dev/tty就是映射到dev/tty1-6之间的一个(取决于你当前的控制台号)
但是如果你现在是在图形界面(Xwindows),那么你会发现现在的/dev/tty映射到的是/dev/pts的伪终端上。
1 2 可以输入命令 "tty" ,将显示当前映射终端如:/dev/tty1或者/dev/pts/0等。也可以使用命令"ps -ax" 来查看其他进程与哪个控制终端相连。 在当前终端中输入 echo "tekkaman" > /dev/tty ,都会直接显示在当前的终端中。
虚拟控制台 /dev/ttyn /dev/ttyn是进程虚拟控制台,他们共享同一个真实的物理控制台。
2. 伪终端pty(pseudo-tty) 伪终端(Pseudo Terminal)是终端的发展,为满足现在需求(比如网络登陆、xwindow窗口的管理)。它是成对出现的逻辑终端设备(即master和slave设备,对master的操作会反映到slave上)。它多用于模拟终端程序,是远程登陆(telnet、ssh、xterm等)后创建的控制台设备。
我们在X Window下打开的终端或使用telnet 或ssh等方式登录Linux主机,此时均通过pty设备。例如,如果某人在网上使用telnet程序连接到你的计算机上,则telnet程序就可能会打开/dev/ptmx设备获取一个fd。此时一个getty程序就应该运行在对应的/dev/pts/*上。当telnet从远端获取了一个字符时,该字符就会通过ptmx、pts/传递给 getty程序,而getty程序就会通过pts/ 、ptmx和telnet程序往网络上返回”login:”字符串信息。
1 telnet<--->/dev/ptmx(master)<--->pts/*(slave)<--->getty
3. 串口终端(/dev/ttySn) 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间串行端口设备通常被称为终端设备,那时它的最大用途就是用来连接终端,所以这些串行端口所对应的设备名称是/dev/tts/0(或/dev/ttyS0)、/dev/tts/1(或/dev /ttyS1)等,设备号分别是(4,0)、(4,1)等
Linux各个目录的作用及内容
目录一
目录二
描述
/bin
二进制可执行命令
/boot
引导加载程序文件
/dev
设备文件,包括终端设备、USB或连接到系统的任何设备
/etc
系统管理和配置文件
/etc/rc.d
启动的配置文件和脚本
/home
用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib
标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin
超级管理命令,这里存放的是系统二进制文件
/tmp
公共的临时文件存储点
/root
系统管理员的主目录
/media
可移动媒体设备,挂载CD-ROM的/media/cdrom,挂载软盘驱动器的/media/floppy
/mnt
系统提供这个目录是让用户临时挂载其他的文件系统
/lost+found
这个目录平时是空的,系统非正常关机而留下”无家可归”的文件(windows下叫什么.chk)
/proc
虚拟的目录,进程信息。可直接访问这个目录来获取系统信息。
/var
某些大文件的溢出区,比方说各种服务的日志文件
/usr
最庞大的目录,要用到的应用程序和文件几乎都在这个目录,其中包含:
/usr/x11R6
存放x window的目录
/usr/bin
众多的应用程序
/usr/sbin
超级用户的一些管理程序
/usr/doc
linux文档
/usr/include
linux下开发和编译应用程序所需要的头文件
/usr/lib
常用的动态链接库和软件包的配置文件
/usr/man
帮助文档
/usr/src
源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin
本地增加的命令,包含了从源安装的用户程序。
/usr/local/lib
本地增加的库根文件系统
150个常用Linux命令精简合集 https://www.toutiao.com/a6485857716316144141/
●线上查询及帮助命令(1 个)
●文件和目录操作命令(12 个) 1 ls tree pwd mkdir rmdir cd touch cp mv rm ln find
●查看文件及内容处理命令(21 个) 1 cat tac more less head tail cut split paste sort uniq wc iconv dos2unix file diff vimd ff chattr lsattr rev grep
●文件压缩及解压缩命令(4 个)
●信息显示命令(12 个) 1 uname hostname dmesg uptime file stat du df top free date cal
●搜索文件命令(4 个) 1 which find whereis locate
●用户管理命令(10 个) 1 useradd usermod userdel groupadd passwd chage id su visudo sudo
●基础网络操作命令(10 个) 1 telnet ssh scp wget ping route ifconfig ifup ifdown netstat
●深入网络操作命令(6 个) 1 lsof route mail mutt nslookup dig
●有关磁盘文件系统的命令(8 个) 1 mount umount df du fsck dd dumpe2fs dump
●关机和查看系统信息的命令(3个)
●系统管理相关命令(8个) 1 uptime top free vmstat mpstat iostat sar chkconfig
●系统安全相关命令(10 个) 1 chmod chown chgrp chage passwd su sudo umask chattr lsattr
●查看系统用户登陆信息的命令(7 个) 1 whoami who w last lastlog users finger
●查看硬件信息相关命令(8 个) 1 ifconfig free fdisk ethtool mii-tool dmidecode dmesg lspci
●其它(19 个) 1 echo printf rpm yum watch alias unalias date clear history eject time nohup nc xargs exec export unset type
●系统性能监视高级命令(12 个) 内存:
1 top free vmstat mpstat iostat sar
CPU:
1 top vmstat mpstat iostat sar
I/O:
1 vmstat mpstat iostat sar
进程:
1 ipcs ipcrm lsof strace lstrace
负载:
1 uptime mount umount df du fsck dd dumpe2fs dump
●关机和查看系统信息的命令(3 个)
●系统管理相关命令(8 个) 1 uptime top free vmstat mpstat iostat sar chkconfig
●系统安全相关命令(10 个) 1 chmod chown chgrp chage passwd su sudo umask chattr
Linux基本命令 1. 查看CentOS系统配置情况命令 1 2 3 4 查物理CPU个数 grep "physical id" /proc/cpuinfo|sort -u|wc -l 查逻辑CPU个数 cat /proc/cpuinfo |grep "processor" |sort -u|wc -l
系统
资源
磁盘和分区
网络
进程
用户
服务
程序
1 2 3 4 5 6 7 8 9 10 Linux下cp -rf总是提示覆盖的解决办法 是别名引起的问题 修改~/.bashrc,在"alias cp='cp -i'" 前添加#号注释后即可 让命令生效 source ~/.bashrc或重新登录
2. linux 启动、重启、关机时,服务自动启动、自动关闭及 chkconfig 命令相关问题 1 2 3 4 5 6 7 8 9 10 11 --level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。 等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动 如果这样设置:chkconfig --level 2345 servername on
3. Linux使用netstat命令查看并发连接数 使用以下命令即可分组查看各种连接状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 返回结果示例: LAST_ACK 5 (正在等待处理的请求数) SYN_RECV 30 ESTABLISHED 1597 (正常数据传输状态) FIN_WAIT1 51 FIN_WAIT2 504 TIME_WAIT 1057 (处理完毕,等待超时结束的请求数) 状态:描述 CLOSED:无连接是活动的或正在进行 LISTEN:服务器在等待进入呼叫 SYN_RECV:一个连接请求已经到达,等待确认 SYN_SENT:应用已经开始,打开一个连接 ESTABLISHED:正常数据传输状态 FIN_WAIT1:应用说它已经完成 FIN_WAIT2:另一边已同意释放 ITMED_WAIT:等待所有分组死掉 CLOSING:两边同时尝试关闭 TIME_WAIT:另一边已初始化一个释放 LAST_ACK:等待所有分组死掉
仅仅只是想查看并发连接数,可以简化一下命令,即:
1 netstat -nat|grep ESTABLISHED|wc -l
4. 改变文件属性与权限 chgrp : 改变档案所属群组
chown : 改变档案拥有者
chmod : 改变档案的权限
5. 查看系统日志 1 tail -f /var/log/messages
CentOS添加环境变量 方法一:直接运行命令export PATH=$PATH:/usr/local/webserver/php/bin 和 export PATH=$PATH:/usr/local/webserver/mysql/bin 使用这种方法,只会对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效,只是临时生效。
方法二:执行vi ~/.bash_profile修改文件中PATH一行,将/usr/local/webserver/php/bin 和 /usr/local/webserver/mysql/bin 加入到PATH=$PATH:$HOME/bin一行之后 这种方法只对当前登录用户生效
方法三:修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码 1 2 PATH=$PATH :/usr/local/webserver/php/bin:/usr/local/webserver/mysql/bin export PATH
最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。
pkg-config 1. 定义 pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息
例子:
1 pkg-config opencv –libs –cflags
结果:
1 2 3 4 5 -I/usr/include/opencv /usr/lib/x86_64-linux-gnu/libopencv_calib3d.so /usr/lib/x86_64-linux-gnu/libopencv_contrib.so /usr/lib/x86_64-linux-gnu/libopencv_core.so /usr/lib/x86_64-linux-gnu/libopencv_features2d.so /usr/lib/x86_64-linux-gnu/libopencv_flann.so /usr/lib/x86_64-linux-gnu/libopencv_gpu.so /usr/lib/x86_64-linux-gnu/libopencv_highgui.so /usr/lib/x86_64-linux-gnu/libopencv_imgproc.so /usr/lib/x86_64-linux-gnu/libopencv_legacy.so /usr/lib/x86_64-linux-gnu/libopencv_ml.so /usr/lib/x86_64-linux-gnu/libopencv_objdetect.so /usr/lib/x86_64-linux-gnu/libopencv_ocl.so /usr/lib/x86_64-linux-gnu/libopencv_photo.so /usr/lib/x86_64-linux-gnu/libopencv_stitching.so /usr/lib/x86_64-linux-gnu/libopencv_superres.so /usr/lib/x86_64-linux-gnu/libopencv_ts.so /usr/lib/x86_64-linux-gnu/libopencv_video.so /usr/lib/x86_64-linux-gnu/libopencv_videostab.so -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab
pkg-config给出了opencv的头文件和库的所有信息!
所有用opencv的其他程序,在编译时,只需要写”pkg-config opencv –libs –cflags”,而不需要自己去找opencv的头文件在哪里,要链接的库在哪里!省时省力!
如果你写了一个库,不管是静态的还是动态的,要提供给第三方使用,那除了给人家库/头文件,最好也写一个pc文件,这样别人使用就方便很多,不用自己再手动写依赖了你哪些库,只需要敲一个”pkg-config [YOUR_LIB] –libs –cflags”
2. pkg-config的信息从哪里来 有2种路径:
第一种:取系统的/usr/lib下的所有*.pc文件。 第二种:PKG_CONFIG_PATH环境变量所指向的路径下的所有*.pc文件。
3. pc文件 比如opencv.pc
1 2 3 4 5 6 7 8 9 10 11 12 prefix=/usr exec_prefix=${prefix} libdir=${prefix} /lib/x86_64-linux-gnu includedir_old=${prefix} /include/opencv includedir_new=${prefix} /include Name: OpenCV Description: Open Source Computer Vision Library Version: 2.4.8 Libs: -L${libdir} ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_calib3d.so -lopencv_calib3d ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_contrib.so -lopencv_contrib ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_core.so -lopencv_core ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_features2d.so -lopencv_features2d ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_flann.so -lopencv_flann ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_gpu.so -lopencv_gpu ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_highgui.so -lopencv_highgui ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_imgproc.so -lopencv_imgproc ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_legacy.so -lopencv_legacy ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_ml.so -lopencv_ml ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_objdetect.so -lopencv_objdetect ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_ocl.so -lopencv_ocl ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_photo.so -lopencv_photo ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_stitching.so -lopencv_stitching ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_superres.so -lopencv_superres ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_ts.so -lopencv_ts ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_video.so -lopencv_video ${exec_prefix} /lib/x86_64-linux-gnu/libopencv_videostab.so -lopencv_videostab Cflags: -I${includedir_old} -I${includedir_new}
清空日志文件,防止删了后,硬盘空间没有释放 1. 查看已删除,并没有释放硬盘空间的文件
2. 清空日志
3. 查日志并高亮显示关键字findFilmkey 1 tail -f interstellar.out | perl -pe 's/(findFilmkey)/\e[1;31m$1\e[0m/g'
4. 显示指定行数的日志内容 1 cat -n interstellar.new |tail -n +1960370|head -n 20
5. 列出关键字搜索到的日志内容 1 cat -n interstellar.new |grep -a "findFilmkey"
6. 分割日志为500m大小 1 split -b 500m interstellar.out
清理内存缓存脚本 1 sync && echo 3 > /proc/sys/vm/drop_caches
使用 vmstat 命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息 CentOS修改系统时间 1 date -s '2015-11-03 3:57:00'
同步系统时间
修改root密码
显示所有运行中的进程
当前连接数 1 netstat -an | grep ESTABLISHED | wc -l
查看全部文件内容(特别是在数据库集群预热新机器时,可以 cat 一下mysql的数据文件,使内存缓存数据)
查看部分文件内容,从头一页一页手动翻页
文件中搜索内容
比如:从error.*的所有文件中,查询带有postCDN字符串的内容行
搜索文件
拷贝文件
拷贝目录和文件
移动重命名文件
删除文件
删除目录和文件
创建软链接
创建空文件
编辑文件
键入i,就是insert
Esc,就是退出编辑模式
:wq,就是保存并退出
临时修改ip命令 1 ifconfig eth0 192.168.201.7
通过iptables屏蔽某些或者某个IP地址达到屏蔽效果 1 iptables -I INPUT -s 192.168.38.174 -j DROP //屏蔽单个ip
iptables 限制ip访问
通过iptables限制27017端口的访问(只允许192.168.1.201、192.168.1.202、192.168.1.203),其他ip都禁止访问
1 2 3 4 -I INPUT -p tcp --dport 27017 -j DROP -I INPUT -s 27.16.159.121 -p tcp --dport 27017 -j ACCEPT -I INPUT -s 192.168.1.202 -p tcp --dport 27017 -j ACCEPT -I INPUT -s 192.168.1.203 -p tcp --dport 27017 -j ACCEPT
注意命令的顺序不能反了。
切换为root用户
查看cpu信息详情
查看磁盘还剩多少空间
查看指定路径的大小 1 du -sh /usr/local/tomcat7
配置防火墙 1 2 3 vi /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙) -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)
特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
1 /etc/init.d/iptables restart
或者
1 service iptables restart
CentOS7是
1 systemctl restart iptables.service
最后重启防火墙使配置生效
如何杀死linux-zombie僵尸进程 1 2 ps -A -o stat ,ppid,pid,cmd |grep -e "^[Zz]" //先查看具体进程: kill -9 pid号 //杀死z进程(这些动作是比较危险的,希望在真正的服务器上面慎用!!!)
xshell 上传文件报错 1 2 3 4 5 6 7 8 -bash: rz: command not found 安装lrzsz即可: 运行命令rz,即是接收文件,xshell就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到linux里的当前目录 运行命令sz file 就是发文件到windows上(保存的目录是可以配置) 比ftp命令方便多了,而且服务器不用再开FTP服务了
查网络端口
查看端口链接数 1 netstat -pnt |grep :80 |wc -l
查看端口是否已经打开:
查看端口是被哪个应用程序使用:
查本机端口已有的连接:
查询端口是否可以连接 1 nc -vvnn 118.244.206.80 27017
添加用户、权限 1 2 3 4 5 6 7 8 useradd -d /usr/john -m john passwd john 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行 root ALL=(ALL) ALL john ALL=(ALL) ALL
一般用户之间或超级用户到一般用户:su john,切回来是:exit
用户管理 1 2 3 4 5 6 7 8 9 10 11 12 13 useradd h5 passwd h5 id h5把movie目录的权限给h5用户 chown h5 movie切换到h5用户 su h5
递归设置目录权限
查询当前目录文件数量
查询当前目录210天前的文件 1 find . -mtime +180 -type f
删除210天前的全部文件(!!!小心小心!!!!!) 1 find . -mtime +180 -type f | xargs rm -rf
常用命令 后台执行sh文件脚本 1 nohup bash send-jenkins.sh &
搜索大文件
两Linux服务器之间CP复制文件 命令:scp filenamecoped Destinationhost:/directory ——scp 要拷贝的文件 目标主机IP:/目录/ eg:将当前目录下的jdk-7u51-linux-x64.rpm拷贝到目标主机5上的/root/目录下
1 scp jdk-7u51-linux-x64.rpm 192.168.201.5:/root/
ssh中文乱码 1 2 3 4 export LC_ALL=zh_CN.GBKexport LANG=zh_CN.GBKexport LC_ALL=zh_CN.UTF-8export LANG=zh_CN.UTF-8
linux当前字符集会影响tomcat部署系统的字符转码,特别是post时 查看linux当前字符集
其中LANG=zh_CN.UTF-8表示当前字符集, 如果不是utf-8,请修改字符集,并重启tomcat!!!!
备份目录 1 2 unalias cp cp -r -f /usr/local/tomcat7/webapps/newspaper-resource-0.0.1-SNAPSHOT/magazine/* /usr/local/backups/resources/magazine
压缩备份目录 1 tar -zcvf /usr/local/backups/webapps/newspaper-server-0.0.1-SNAPSHOT.2014-02-16.tar.gz /usr/local/tomcat7/webapps/newspaper-server-0.0.1-SNAPSHOT
跨服务器迁移目录 1 scp -r /usr/local/tomcat7/webapps/newspaper-server-0.0.1-SNAPSHOT/magazine 192.168.201.3:/usr/local/backups/resources
修改Linux的hostname 通过hostname命令来查看本机的hostname
修改文件/etc/sysconfig/network以下内容
HOSTNAME=hostname
重启network
查看linux版本 1 2 cat /etc/issuelsb_release -a
后台运行jar 1 2 3 4 5 nohup java -jar dotado-report-1.0.jar >/dev/null &有日志的 nohup java -jar dotado-report-1.0.jar >>dotado-report-1.0.out &
解压jar 1 unzip dotado-report-1.0.jar -d dotado-report-1.0
压缩jar 1 jar cvfm0 dotado-report-1.0.jar dotado-report-1.0/META-INF/MANIFEST.MF -C dotado-report-1.0/ .
固定ip 使用下面的命令来验证网络管理器服务的状态:
1 systemctl status NetworkManager.service
运行以下命令来检查受网络管理器管理的网络接口:
例如:enp2s0
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 vi /etc/sysconfig/network-scripts/ifcfg-enp2s0 HWADDR="00:E0:4C:ED:FE:3B" TYPE="Ethernet" BOOTPROTO="static" DEFROUTE="yes" PEERDNS="yes" PEERROUTES="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_PEERDNS="yes" IPV6_PEERROUTES="yes" IPV6_FAILURE_FATAL="no" NAME="enp2s0" UUID="8df04a6f-d2e5-4e94-88ce-ab71d8aa8528" ONBOOT="yes" IPADDR=192.168.1.172 NETMASK=255.255.255.0 NETWORK=192.168.1.0 NM_CONTROLLED=no 最后,重启网络服务 systemctl restart network.service
挂载硬盘的方法 1. 查看磁盘状况
2. 用fdisk 对/dev/sdb 进行分区 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 fdisk /dev/sdb Command (m for help ): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-652, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-652, default 652): Using default value 652 Command (m for help ): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
3. 格式化 /dev/sdb1 分区
4. 创建目录 并将 /dev/sdb1 挂在到该目录下 1 2 mkdir /zewspapermount /dev/sdb1 /zewspaper
5. 验证挂载是否成功
6. 设置开机自动挂载 1 2 vi /etc/fstab /dev/sdb1 /zewspaper ext3 defaults 0 0
LINUX下搭建FTP服务器 1. 检查vsftpd软件是否安装
2. 安装
3. 启动ftp:
4. 停止ftp:
5. 重启ftp:
6. FTP自动启动 1 chkconfig vsftpd on service vsftpd start
7. vsftpd的配置 位于/etc/vsftpd/目录下 限制某些IP访问服务器,只允许某些IP访问
1 listen_address=192.168.0.33
8. 添加FTP本地用户 1 2 3 adduser -d /zewspaper/ftp -g ftp -s /sbin/nologin newspaper passwd newspaper
9. 将某个目录挂载到FTP服务器下供用户使用 1 2 3 4 5 6 mount --bind /zewspaper/tomcat7/logs /zewspaper/ftp/newspaper-server/tomcat 系统在启动时像mount--bind命令一样装载目录 添加下面的设置到 /etc/fstab /zewspaper/tomcat7/logs /zewspaper/ftp/newspaper-server/tomcat none rw,bind 0 0
vsftp 登录报错:500 OOPS: cannot change directory:/
1 setsebool -P ftp_home_dir 1
vsftp 登录报错:500 OOPS: vsftpd: cannot locate user specified in ‘ftp_username’:ftp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 vi /etc/vsftpd/vsftpd.conf 找到: anonymous_enable=YES 修改为: anonymous_enable=NO 重新启动vsftpd使配置生效 service vsftpd restart getsebool -a | grep ftp
ftp客户端 1. 自动安装
2. 关闭SELinux方法 1 2 3 4 5 vi /etc/selinux/config 改为 SELINUX=disabled
3. 用lsmod命令查看了系统当前加载的模块,加载ip_nat_ftp,ip_conntrack,ip_conntrack_ftp几个模块 使用modprobe ip_nat_ftp命令将ip_nat_ftp载入
使用modprobe ip_conntrack_ftp命令将ip_conntrack_ftp载入
4. 自动开机加载 修改/etc/sysconfig/iptables-config
改为 IPTABLES_MODULES=”ip_nat_ftp” 即可成功了
linux系统信息神器,dstat 1. 安装
当执行dstat命令时,默认它会收集cpu,disk,net,paging,system等数据,并且每秒收集一次
看一下我们常用的参数
1 2 3 4 5 6 7 8 9 -c, --cpu enable cpu stats 显示cpu的情况 -d, --disk enable disk stats 显示硬盘的情况 -l, --load enable load stats 显示系统的负载情况 -m, --mem enable memory stats 显示内存的情况 -n, --net enable network stats 显示网络的情况 -p, --proc enable process stats 显示进程的情况 -s, --swap enable swap stats 显示swap的情况 -y, --sys enable system stats 显示系统的情况 --output file write CSV output to file 写到csv文件中
shell脚本.sh文件的格式注意 用notepad++打开.sh文件
视图–显示符号–显示所有符号
编辑–档案格式转换–转换为UNIX格式
linux添加开机自启动脚本 1. 先修改好脚本,使其所有模块都能在任意目录启动时正常执行; 2. 再在/etc/rc.local的末尾添加一行以绝对路径启动脚本的行; JAVA_HOME环境变量 此文件/etc/profile
在profile文件末尾加入:
1 2 3 export JAVA_HOME=/usr/java/jdk1.7.0_45/export PATH=$JAVA_HOME /bin:$PATH export CLASSPATH=.:$JAVA_HOME /lib/dt.jar:$JAVA_HOME /lib/tools.jar
跨服务器拷贝文件或目录的脚本 1. 安装expect工具
2. 写脚本 1 2 3 4 5 6 7 8 9 10 11 12 #!/bin/bash password='123456' /usr/bin/expect <<-EOF spawn scp -r /root/test.txt root@192.168.1.123:/root/ set timeout 300 expect "root@192.168.1.123's password:" set timeout 300 send "$password\r" set timeout 300 send "exit\r" expect eof EOF
centos更改yum源为aliyun 首先备份/etc/yum.repos.d/CentOS-Base.repo 1 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
进入yum源配置文件所在文件夹
下载aliyun的yum源配置文件,放入/etc/yum.repos.d/(操作前请做好相应备份) 1 wget http://mirrors.aliyun.com/repo/Centos-6.repo
下载163的yum源配置文件 1 wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
运行yum makecache生成缓存
更新系统
完全卸载删除gitlab 1、停止gitlab
2、卸载gitlab(注意这里写的是gitlab-ce)
3、查看gitlab进程
4、杀掉第一个进程(就是带有好多………….的进程)
杀掉后,在ps aux | grep gitlab确认一遍,还有没有gitlab的进程
5、删除所有包含gitlab文件 1 find / -name gitlab | xargs rm -rf
Ubuntu root远程登陆 1. 设置管理密码 1 2 3 4 sudo passwd root //用sudo 修改root帐户Password: //输入密码 Enter new UNIX password: //提示输入新的root帐户密码 Retype new UNIX password: //再输入一次确认密码
修改成功之后你就可以使用root账号了,可以使用su root 命令切换到root。
2. 使用apt命令安装openssh server 1 sudo apt-get install openssh-server
3. 对 openssh server进行配置 1 sudo vi /etc/ssh/sshd_config
找到PermitRootLogin no一行,改为PermitRootLogin yes
4. 重启 openssh server 1 sudo service ssh restart
5. ubuntu默认防火墙关闭命令:
问题汇总 1. 访问外网报错:connect: Network is unreachable 解决方法,这是gw网关 1 route add default gw 192.168.1.1
2. ping: unknown host 修改dns配置
建议设置Google的公共DNS服务
1 2 3 nameserver 192.168.1.1 nameserver 8.8.8.8 nameserver 8.8.4.4
3. 阿里云基线检测,报 kernel.kptr_restrict 警告 是否启用kptr_restrice,此功能为安全性功能,用于屏蔽内核指针。
0:该特性被完全禁止;
1:那些使用”%pk”打印出来的内核指针被隐藏(会以一长串0替换掉),除非用户有CAP_SYSLOG权限,并且没有改变他们的UID/GID(防止在撤销权限之前打开的文件泄露指针信息);
2:所有内核指使用”%pk”打印的都被隐藏。
1 2 3 4 5 kernel.kptr_restrict = 1 把参数添加到/etc/sysctl.conf中,然后执行sysctl -p使参数生效,永久生效 sysctl -p 查看所有内核参数的值
4. error adding symbols: DSO missing from command line 编译错误问题解决办法:
直接指定包含库的路径和库的名称
5. fatal error: readline/readline.h: No such file or directory 缺少libreadline-dev依赖包
1 2 centos: yum install readline-devel debian: apt-get install libreadline-dev
6. g++: 内部错误:Killed (程序 cc1plus) g++: internal compiler error: Killed (program cc1plus)
原因是内存不足, 在linux下增加临时swap空间
1 2 3 4 5 6 7 8 9 10 step 1: 注释:of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,64M就是块大小,这里是64MB,所以总共空间就是bs*count=1024MB.这里分配空间的时候需要一点时间,等待执行完毕。 step 2: 注释:把刚才空间格式化成swap各式 step 3: 注释:使刚才创建的swap空间 step 4:执行你相关的操作,如make
如果创建了临时空间仍然提示 “g++: 内部错误:Killed (程序 cc1plus)”,可能分配的空间不够大,可继续分配更大的空间
关闭:
1 2 step 1:sudo swapoff /home/swap step 2:sudo rm /home/swap
服务器硬盘因为断电,出现故障 1. Linux文件系统只读Read-only file system 问题描述:
1、系统无法进行磁盘的读写操作(touch,cp,chmod)等等 2、服务器无法启动(也是因为无法创建文件) 3、只有涉及到系统磁盘的写操作,都会报错”Read-only file system”
问题原因:
1、系统没有正常关机,导致虚拟磁盘出现文件系统错误; 2、机器硬盘故障导致硬盘只读
问题解决:
1、将系统重要的文件备份到远程主机中
1 scp -r dirname /filename user@remote_hostIP:/backupdir
通过scp -r 可以避免对系统有写操作
2、然后重启系统,切换单用户模式。
3、使用fsck手动修复,具体操作如下:
1 fsck.ext4 -y /dev/vda1(根分区对应的磁盘分区,可通过df -h 命令获取)
4、在实验的过程中,还可常识使用如下命令进行修复
1 2 3 4 5 6 mount -o remount rw / service iptables stop service sshd start service network start service mysql start