基础
linux中设置环境变量和gcc/g++的include路径
- 对所有用户有效在/etc/profile增加以下内容
1 | #在PATH中找到可执行文件程序的路径。 |
- 保存后在终端中输入下面的语句,以重启配置:
1 | source /etc/profile |
Linux内核tty设备
https://blog.csdn.net/huchuan1985/article/details/46699037
- 控制台
- 系统控制台/dev/console
/dev/console是系统控制台,是与操作系统交互的设备。
- 当前控制台: /dev/tty
这是应用程序中的概念,如果当前进程有控制终端(Controlling Terminal),那么/dev/tty就是当前进程控制台的设备文件。
/dev/tty会映射到当前设备(使用命令“tty”可以查看它具体对应哪个实际物理控制台设备)
如果在控制台界面下(即字符界面下)那么dev/tty就是映射到dev/tty1-6之间的一个(取决于你当前的控制台号)
但是如果你现在是在图形界面(Xwindows),那么你会发现现在的/dev/tty映射到的是/dev/pts的伪终端上。
1 | 可以输入命令 “tty",将显示当前映射终端如:/dev/tty1或者/dev/pts/0等。也可以使用命令“ps -ax”来查看其他进程与哪个控制终端相连。 |
- 虚拟控制台 /dev/ttyn
/dev/ttyn是进程虚拟控制台,他们共享同一个真实的物理控制台。
- 伪终端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:”字符串信息。这样,登录程序与telnet程序就通过“伪终端”进行通信。
1 | telnet<--->/dev/ptmx(master)<--->pts/*(slave)<--->getty |
- 串口终端(/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 个)
help
如:mkdir --help
●文件和目录操作命令(12 个)
ls tree pwd mkdir rmdir cd touch cp mv rm ln find
●查看文件及内容处理命令(21 个)
cat tac more less head tail cut split paste sort uniq wc iconv dos2unix file diff vimd ff chattr lsattr rev grep
●文件压缩及解压缩命令(4 个)
tar unzip gzip zip
●信息显示命令(12 个)
uname hostname dmesg uptime file stat du df top free date cal
●搜索文件命令(4 个)
which find whereis locate
●用户管理命令(10 个)
useradd usermod userdel groupadd passwd chage id su visudo sudo
●基础网络操作命令(10 个)
telnet ssh scp wget ping route ifconfig ifup ifdown netstat
●深入网络操作命令(6 个)
lsof route mail mutt nslookup dig
●有关磁盘文件系统的命令(8 个)
mount umount df du fsck dd dumpe2fs dump
●关机和查看系统信息的命令(3个)
shutdown halt init
●系统管理相关命令(8个)
uptime top free vmstat mpstat iostat sar chkconfig
●系统安全相关命令(10 个)
chmod chown chgrp chage passwd su sudo umask chattr lsattr
●查看系统用户登陆信息的命令(7 个)
whoami who w last lastlog users finger
●查看硬件信息相关命令(8 个)
ifconfig free fdisk ethtool mii-tool dmidecode dmesg lspci
●其它(19 个)
echo printf rpm yum watch alias unalias date clear history eject time nohup nc xargs exec export unset type
●系统性能监视高级命令(12 个)
内存:top free vmstat mpstat iostat sar
CPU:top vmstat mpstat iostat sar
I/O:vmstat mpstat iostat sar
进程:ipcs ipcrm lsof strace lstrace
负载:uptime mount umount df du fsck dd dumpe2fs dump
●关机和查看系统信息的命令(3 个)
shutdown halt init
●系统管理相关命令(8 个)
uptime top free vmstat mpstat iostat sar chkconfig
●系统安全相关命令(10 个)
chmod chown chgrp chage passwd su sudo umask chattr
Linux基本命令
查看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系统
# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 # env # 查看环境变量
资源
# free -m # 查看内存使用量和交换区使用量 # df -h # 查看各分区使用情况 # du -sh <目录名> # 查看指定目录的大小 # grep MemTotal /proc/meminfo # 查看内存总量 # grep MemFree /proc/meminfo # 查看空闲内存量 # uptime # 查看系统运行时间、用户数、负载 # cat /proc/loadavg # 查看系统负载
磁盘和分区
# mount | column -t # 查看挂接的分区状态 # fdisk -l # 查看所有分区 # swapon -s # 查看所有交换分区 # hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备) # dmesg | grep IDE # 查看启动时IDE设备检测状况
网络
# ifconfig # 查看所有网络接口的属性 # iptables -L # 查看防火墙设置 # route -n # 查看路由表 # netstat -lntp # 查看所有监听端口 # netstat -antp # 查看所有已经建立的连接 # netstat -s # 查看网络统计信息
进程
# ps -ef # 查看所有进程 # top # 实时显示进程状态
用户
# w # 查看活动用户 # id <用户名> # 查看指定用户信息 # last # 查看用户登录日志 # cut -d: -f1 /etc/passwd # 查看系统所有用户 # cut -d: -f1 /etc/group # 查看系统所有组 # crontab -l # 查看当前用户的计划任务
服务
# chkconfig --list # 列出所有系统服务 # chkconfig --list | grep on # 列出所有启动的系统服务
程序
# rpm -qa # 查看所有安装的软件包
Linux下cp -rf总是提示覆盖的解决办法
是别名引起的问题 修改~/.bashrc,在“alias cp='cp -i'”前添加#号注释后即可 让命令生效 source ~/.bashrc 或重新登录
linux 启动、重启、关机时,服务自动启动、自动关闭及 chkconfig 命令相关问题
–level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机 等级1表示:单用户模式 等级2表示:无网络连接的多用户命令行模式 等级3表示:有网络连接的多用户命令行模式 等级4表示:不可用 等级5表示:带图形界面的多用户模式 等级6表示:重新启动 如果这样设置:chkconfig --level 2345 servername on
Linux使用netstat命令查看并发连接数
使用以下命令即可分组查看各种连接状态
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:等待所有分组死掉
仅仅只是想查看并发连接数,可以简化一下命令,即:
netstat -nat|grep ESTABLISHED|wc -l
改变文件属性与权限
chgrp : 改变档案所属群组
1 | chgrp users install.log |
chown : 改变档案拥有者
1 | chown users install.log |
chmod : 改变档案的权限
1 | chmod 777 install.log |
- 查看系统日志
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文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码
PATH=$PATH:/usr/local/webserver/php/bin:/usr/local/webserver/mysql/bin
export PATH
最后:执行 命令source /etc/profile或 执行点命令 ./profile使其修改生效,执行完可通过echo $PATH命令查看是否添加成功。
pkg-config
- 定义
pkg-config是一个linux下的命令,用于获得某一个库/模块的所有编译相关的信息
例子:
1 | pkg-config opencv –libs –cflags |
结果:
1 | -I/usr/include/opencv |
pkg-config给出了opencv的头文件和库的所有信息!
所有用opencv的其他程序,在编译时,只需要写“pkg-config opencv –libs –cflags”,而不需要自己去找opencv的头文件在哪里,要链接的库在哪里!省时省力!
如果你写了一个库,不管是静态的还是动态的,要提供给第三方使用,那除了给人家库/头文件,最好也写一个pc文件,这样别人使用就方便很多,不用自己再手动写依赖了你哪些库,只需要敲一个”pkg-config [YOUR_LIB] –libs –cflags”
- pkg-config的信息从哪里来
有2种路径:
第一种:取系统的/usr/lib下的所有.pc文件。
第二种:PKG_CONFIG_PATH环境变量所指向的路径下的所有.pc文件。
- pc文件
比如opencv.pc
1 | # Package Information for pkg-config |
清空日志文件,防止删了后,硬盘空间没有释放
查看已删除,并没有释放硬盘空间的文件
lsof | grep delete
清空日志
echo "" >/tmp/acess.log
查日志并高亮显示关键字findFilmkey
tail -f interstellar.out | perl -pe 's/(findFilmkey)/\e[1;31m$1\e[0m/g'
显示指定行数的日志内容
cat -n interstellar.new |tail -n +1960370|head -n 20
列出关键字搜索到的日志内容
cat -n interstellar.new |grep -a "findFilmkey"
分割日志为500m大小
split -b 500m interstellar.out
清理内存缓存脚本
sync && echo 3 > /proc/sys/vm/drop_caches
- 使用 vmstat 命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息
CentOS修改系统时间
date -s '2015-11-03 3:57:00'
同步系统时间
ntpdate edu.ntp.org.cn
修改root密码
passwd
显示所有运行中的进程
ps aux | less
当前连接数
netstat -an | grep ESTABLISHED | wc -l
查看全部文件内容(特别是在数据库集群预热新机器时,可以
cat
一下mysql的数据文件,使内存缓存数据)cat
查看部分文件内容,从头一页一页手动翻页
less
文件中搜索内容
grep
比如:从error.*的所有文件中,查询带有postCDN字符串的内容行
grep "postCDN" error.*
搜索文件
find
拷贝文件
cp
拷贝目录和文件
cp -r
移动重命名文件
mv
删除文件
rm
删除目录和文件
rm -r
创建软链接
ln -s
创建空文件
touch
编辑文件
vim
键入i,就是insert
Esc,就是退出编辑模式
:wq,就是保存并退出
临时修改ip命令
ifconfig eth0 192.168.201.7
通过iptables屏蔽某些或者某个IP地址达到屏蔽效果
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都禁止访问
-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用户
su - root
查看cpu信息详情
cat /proc/cpuinfo
查看磁盘还剩多少空间
df -h
查看指定路径的大小
du -sh /usr/local/tomcat7
配置防火墙
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端口这条规则的下面
/etc/init.d/iptables restart
或者
service iptables restart
CentOS7是
systemctl restart iptables.service
最后重启防火墙使配置生效
如何杀死linux-zombie僵尸进程
ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]" //先查看具体进程: kill -9 pid号 //杀死z进程(这些动作是比较危险的,希望在真正的服务器上面慎用!!!)
xshell 上传文件报错
-bash: rz: command not found 安装lrzsz即可: # yum -y install lrzsz 运行命令rz,即是接收文件,xshell就会弹出文件选择对话框,选好文件之后关闭对话框,文件就会上传到linux里的当前目录 运行命令sz file 就是发文件到windows上(保存的目录是可以配置) 比ftp命令方便多了,而且服务器不用再开FTP服务了
查网络端口
netstat -tnlp
查看端口链接数
netstat -pnt |grep :80 |wc -l
查看端口是否已经打开:
netstat -an
查看端口是被哪个应用程序使用:
netstat -apn ps -ef
查本机端口已有的连接:
lsof -i:8080
查询端口是否可以连接
nc -vvnn 118.244.206.80 27017
添加用户、权限
useradd -d /usr/john -m john passwd john
修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行
root ALL=(ALL) ALL john ALL=(ALL) ALL
一般用户之间或超级用户到一般用户:su john,切回来是:exit
用户管理
useradd h5 passwd h5 id h5
把movie目录的权限给h5用户
chown h5 movie
切换到h5用户
su h5
递归设置目录权限
chmod 777 . -R
查询当前目录文件数量
find . -type f |wc -l
查询当前目录210天前的文件
find . -mtime +180 -type f
删除210天前的全部文件(!!!小心小心!!!!!)
find . -mtime +180 -type f | xargs rm -rf
常用命令
后台执行sh文件脚本
nohup bash send-jenkins.sh &
搜索大文件
find ~ -size +100M
两Linux服务器之间CP复制文件
命令:scp filenamecoped Destinationhost:/directory ——scp 要拷贝的文件 目标主机IP:/目录/
eg:将当前目录下的jdk-7u51-linux-x64.rpm拷贝到目标主机5上的/root/目录下scp jdk-7u51-linux-x64.rpm 192.168.201.5:/root/
ssh中文乱码
export LC_ALL=zh_CN.GBK export LANG=zh_CN.GBK export LC_ALL=zh_CN.UTF-8 export LANG=zh_CN.UTF-8
linux当前字符集会影响tomcat部署系统的字符转码,特别是post时
查看linux当前字符集
env
其中LANG=zh_CN.UTF-8表示当前字符集,
如果不是utf-8,请修改字符集,并重启tomcat!!!!
备份目录
unalias cp cp -r -f /usr/local/tomcat7/webapps/newspaper-resource-0.0.1-SNAPSHOT/magazine/* /usr/local/backups/resources/magazine
压缩备份目录
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
跨服务器迁移目录
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
service network restart
查看linux版本
cat /etc/issue lsb_release -a
后台运行jar
nohup java -jar dotado-report-1.0.jar >/dev/null &
有日志的
nohup java -jar dotado-report-1.0.jar >>dotado-report-1.0.out &
解压jar
unzip dotado-report-1.0.jar -d dotado-report-1.0
压缩jar
jar cvfm0 dotado-report-1.0.jar dotado-report-1.0/META-INF/MANIFEST.MF -C dotado-report-1.0/ .
固定ip
使用下面的命令来验证网络管理器服务的状态:
systemctl status NetworkManager.service
运行以下命令来检查受网络管理器管理的网络接口:
nmcli dev status
例如:enp2s0
vi /etc/sysconfig/network-scripts/ifcfg-enp2s0 HWADDR="00:E0:4C:ED:FE:3B" TYPE="Ethernet" BOOTPROTO="static" #设置网卡获得ip地址的方式,可能的选项为static,dhcp或bootp,分别对应静态指定的 ip地址,通过dhcp协议获得的ip地址,通过bootp协议获得的ip地址 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 #如果设置网卡获得 ip地址的方式为静态指定,此字段就指定了网卡对应的ip地址 NETMASK=255.255.255.0 #网卡对应的网络掩码 NETWORK=192.168.1.0 #网卡对应的网络地址 NM_CONTROLLED=no #表示该接口将通过该配置文件进行设置,而不是通过网络管理器进行管理
最后,重启网络服务
systemctl restart network.service
挂载硬盘的方法
查看磁盘状况
fdisk -l
用fdisk 对/dev/sdb 进行分区
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.
格式化 /dev/sdb1 分区
mkfs -t ext3 /dev/sdb1
创建目录 并将 /dev/sdb1 挂在到该目录下
mkdir /zewspaper mount /dev/sdb1 /zewspaper
验证挂载是否成功
df -k
设置开机自动挂载
vi /etc/fstab /dev/sdb1 /zewspaper ext3 defaults 0 0
LINUX下搭建FTP服务器
检查vsftpd软件是否安装
rpm -qa |grep vsftpd
安装
yum install vsftpd
启动ftp:
service vsftpd start
停止ftp:
service vsftpd stop
重启ftp:
service vsftpd restart
FTP自动启动
chkconfig vsftpd on service vsftpd start
vsftpd的配置
位于/etc/vsftpd/目录下
限制某些IP访问服务器,只允许某些IP访问listen_address=192.168.0.33
添加FTP本地用户
adduser -d /zewspaper/ftp -g ftp -s /sbin/nologin newspaper passwd newspaper
将某个目录挂载到FTP服务器下供用户使用
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:/
setsebool -P ftp_home_dir 1
vsftp 登录报错:500 OOPS: vsftpd: cannot locate user specified in ‘ftp_username’:ftp
vi /etc/vsftpd/vsftpd.conf
找到:
anonymous_enable=YES
修改为:
anonymous_enable=NO
重新启动vsftpd使配置生效
service vsftpd restart
getsebool -a | grep ftp
ftp客户端
自动安装
yum install ftp
关闭SELinux方法
vi /etc/selinux/config
改为
SELINUX=disabled
用lsmod命令查看了系统当前加载的模块,加载ip_nat_ftp,ip_conntrack,ip_conntrack_ftp几个模块
使用modprobe ip_nat_ftp命令将ip_nat_ftp载入
使用modprobe ip_conntrack_ftp命令将ip_conntrack_ftp载入
自动开机加载
修改/etc/sysconfig/iptables-config
改为 IPTABLES_MODULES=”ip_nat_ftp” 即可成功了
linux系统信息神器,dstat
安装
yum install dstat
当执行dstat命令时,默认它会收集cpu,disk,net,paging,system等数据,并且每秒收集一次
看一下我们常用的参数
-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添加开机自启动脚本
先修改好脚本,使其所有模块都能在任意目录启动时正常执行;
再在/etc/rc.local的末尾添加一行以绝对路径启动脚本的行;
JAVA_HOME环境变量
此文件/etc/profile
在profile文件末尾加入:
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
跨服务器拷贝文件或目录的脚本
安装expect工具
yum install expect
写脚本
#!/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
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
进入yum源配置文件所在文件夹
cd /etc/yum.repos.d/
下载aliyun的yum源配置文件,放入/etc/yum.repos.d/(操作前请做好相应备份)
wget http://mirrors.aliyun.com/repo/Centos-6.repo
下载163的yum源配置文件
wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
运行yum makecache生成缓存
yum makecache
更新系统
yum -y update
完全卸载删除gitlab
1、停止gitlab
gitlab-ctl stop
2、卸载gitlab(注意这里写的是gitlab-ce)
rpm -e gitlab-ce
3、查看gitlab进程
ps aux | grep gitlab
4、杀掉第一个进程(就是带有好多………….的进程)
kill -9 18777
杀掉后,在ps aux | grep gitlab确认一遍,还有没有gitlab的进程
5、删除所有包含gitlab文件
find / -name gitlab | xargs rm -rf
Ubuntu
root远程登陆
设置管理密码
sudo passwd root //用sudo修改root帐户 Password: //输入密码 Enter new UNIX password: //提示输入新的root帐户密码 Retype new UNIX password: //再输入一次确认密码
修改成功之后你就可以使用root账号了,可以使用su root 命令切换到root。
使用apt命令安装openssh server
sudo apt-get install openssh-server
对 openssh server进行配置
sudo vi /etc/ssh/sshd_config
找到PermitRootLogin no一行,改为PermitRootLogin yes
重启 openssh server
sudo service ssh restart
ubuntu默认防火墙关闭命令:
ufw disable
问题汇总
访问外网报错:connect: Network is unreachable 解决方法,这是gw网关
route add default gw 192.168.1.1
ping: unknown host
修改dns配置
/etc/resolv.conf
建议设置Google的公共DNS服务
nameserver 192.168.1.1 nameserver 8.8.8.8 nameserver 8.8.4.4
阿里云基线检测,报 kernel.kptr_restrict 警告
是否启用kptr_restrice,此功能为安全性功能,用于屏蔽内核指针。
0:该特性被完全禁止;
1:那些使用“%pk”打印出来的内核指针被隐藏(会以一长串0替换掉),除非用户有CAP_SYSLOG权限,并且没有改变他们的UID/GID(防止在撤销权限之前打开的文件泄露指针信息);
2:所有内核指使用“%pk”打印的都被隐藏。
kernel.kptr_restrict = 1 把参数添加到/etc/sysctl.conf中,然后执行sysctl -p使参数生效,永久生效 sysctl -p 查看所有内核参数的值
error adding symbols: DSO missing from command line
编译错误问题解决办法:
直接指定包含库的路径和库的名称
fatal error: readline/readline.h: No such file or directory
缺少libreadline-dev依赖包
centos: yum install readline-devel debian: apt-get install libreadline-dev
g++: 内部错误:Killed (程序 cc1plus)
g++: internal compiler error: Killed (program cc1plus)
原因是内存不足, 在linux下增加临时swap空间
1 | step 1: |
如果创建了临时空间仍然提示 “g++: 内部错误:Killed (程序 cc1plus)”,可能分配的空间不够大,可继续分配更大的空间
关闭:
1 | step 1:sudo swapoff /home/swap |
服务器硬盘因为断电,出现故障
Linux文件系统只读Read-only file system
问题描述:
1、系统无法进行磁盘的读写操作(touch,cp,chmod)等等 2、服务器无法启动(也是因为无法创建文件) 3、只有涉及到系统磁盘的写操作,都会报错"Read-only file system"
问题原因:
1、系统没有正常关机,导致虚拟磁盘出现文件系统错误; 2、机器硬盘故障导致硬盘只读
问题解决:
1、将系统重要的文件备份到远程主机中 scp -r dirname/filename user@remote_hostIP:/backupdir 通过scp -r 可以避免对系统有写操作 2、然后重启系统,切换单用户模式。 init 1 3、使用fsck手动修复,具体操作如下: fsck.ext4 -y /dev/vda1(根分区对应的磁盘分区,可通过df -h 命令获取) 4、在实验的过程中,还可常识使用如下命令进行修复 mount -o remount rw / service iptables stop service sshd start service network start service mysql start
a