目录
centos中显示utf-8编码格式的shell脚本有中文乱码
常用性能检查命令(内存、CPU 、网络、磁盘、Java应用)
学习linux好习惯
善于查看man page(manual)等帮助文档 利用好Tab键 掌握好一些快捷键 ctrl + c(停止当前进程) history(查看命令历史) ctrl + l(清屏,与clear命令作用相同)
常见问题 command not found
telnet不能用!!!提示:-bash: telnet: command not found
解决方式,重装一下telnet客户端。
centos、ubuntu
yum list telnet* 查看telnet相关的安装包
yum install telnet-server 安装telnet服务
yum install telnet.* 安装telnet客户端
乱码问题及解决方法
出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导致的。
查看当前语言环境
echo $LANG
发现为
zh_TW.UTF-8
但是中文语言包没安装或没启用,就会出现乱码
输入
LANG=en_US
设置显示为英文,此命令即时生效,但不能永久生效,永久生效看下面。此时,再次输入命令就可以看到英文报错信息了
如果一定需要中文提示,可以这样安装:
yum groupinstall chinese-support
设置本地默认语言环境
vim /etc/locale.conf
加入LANG=“zh_TW.UTF-8”
即时永久生效
source /etc/locale.conf
输
locale
可以查看本地语言环境
LANG=zh_TW.UTF-8 LC_CTYPE="zh_TW.UTF-8" LC_NUMERIC=zh_TW.UTF-8 LC_TIME=zh_TW.UTF-8 LC_COLLATE="zh_TW.UTF-8" LC_MONETARY=zh_TW.UTF-8 LC_MESSAGES="zh_TW.UTF-8" LC_PAPER=zh_TW.UTF-8 LC_NAME="zh_TW.UTF-8" LC_ADDRESS="zh_TW.UTF-8" LC_TELEPHONE="zh_TW.UTF-8" LC_MEASUREMENT=zh_TW.UTF-8 LC_IDENTIFICATION="zh_TW.UTF-8" LC_ALL=
centos中显示utf-8编码格式的shell脚本有中文乱码
问题现象
自己编写的shell脚本,保存的编码格式为utf-8,但是上传到centos中,显示为中为乱码
使用
file shell.sh
查看文件的编码格式shell.sh: UTF-8 Unicode text
解决方法
使用iconv 把文件编码格式转换成为gb2312
iconv -f utf-8 -t gb2312 shell.sh > shell2.sh
再次file shell2.sh查看文件编码
linuxsec2.sh: ISO-8859 text
中文乱码问题得以解决
系统版本和内核版本
常用性能检查命令(内存、CPU 、网络、磁盘、Java应用)
硬件时钟, 系统时钟, 网络时钟, 时区修改和同步
systemctl命令
systemctl 提供了一组子命令来管理单个的 unit,其命令格式为: systemctl [command] [unit] command 主要有: start:立刻启动后面接的 unit。 stop:立刻关闭后面接的 unit。 restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。 reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。 enable:设置下次开机时,后面接的 unit 会被启动。 disable:设置下次开机时,后面接的 unit 不会被启动。 status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。 is-active:目前有没有正在运行中。 is-enable:开机时有没有默认要启用这个 unit。 kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。 show:列出 unit 的配置。 mask:注销 unit,注销后你就无法启动这个 unit 了。 unmask:取消对 unit 的注销。
通过 systemctl --help 产看更多
Linux查找最近修改的文件
查找当前目录下.phtml文件中,最近30分钟内修改过的文件。
find . -name ‘*.phtml‘ -type f -mmin -30
查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细情况
find . -name ‘*.phtml‘ -type f -mmin -30 -ls
查找当前目录下,最近1天内修改过的常规文件。
find . -type f -mtime -1
查找当前目录下,最近1天前(2天内)修改过的常规文件。
find . -type f -mtime +1
Linux系统文件有三个主要的时间属性,分别是 ctime(change time), atime(access time), mtime(modify time)。
这三个时间很容易混淆,准备深入了解linux的童鞋请区分这三者的区别 atime:Access time, 是在读取文件或者执行文件时更改,即文件最后一次被读取的时间。 说明: st_atime Time when file data was last accessed. Changed by the following functions: creat(), mknod(), pipe(), utime(2), and read(2). mtime:Modified time, 是在写入文件时随文件内容的更改而更改,是指文件内容最后一次被修改的时间。 说明: st_mtime Time when data was last modified. Changed by the fol- lowing functions: creat(), mknod(), pipe(), utime(), and write(2). ctime:Change time, 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。 说明: st_ctime Time when file status was last changed. Changed by the following functions: chmod(), chown(), creat(), link(2), mknod(), pipe(), unlink(2), utime(), and write(). 很多人把它理解成create time,包括很多误导人的书籍也是这么写。实际上ctime是指change time。 注意: 1、修改是文本本身的内容发生了变化(mtime) 改变是文件的索引节点发生了改变(ctime) 2、如果修改了文件内容,则同时更新ctime和mtime 3、如果只改变了文件索引节点,比如修改权限,则只是改变了ctime 4、如果使用ext3文件系统的时候,在mount的时候使用了noatime参数则不会更新atime的信息, 即访问文件之后atime不会被修改,而这个不代表真实情况 小知识:这三个 time stamp 都放在 inode 中。若mtime,atime修改, inode 就一定会改,相应的inode改了,那ctime 也就跟着要改了,之所以在mount option中使用 noatime, 就是不想 file system 做太多的修改, 从而改善读取性能.
查看文件的 atime、ctime 和 mtime。
# ls -lc filename 列出文件的 ctime
# ls -lu filename 列出文件的 atime
# ls -l filename 列出文件的 mtime
关机
- shutdown 是安全的方式关闭系统。
- shutdown -k +5 并非真正关机,只是向用户发出警告信息“离关机还有五分钟”
- shutdown -k 向用户发出警告信息“离关机还有一分钟”,默认延时一分钟。
- shutdown -h 关机,默认延迟一分钟。
- shutdown -h 60 60分钟后关机
- shutdown -h now 立刻关机。
- shutdown -h 12:00 在12:00关机
- shutdown -r 重启,默认延迟一分钟。
- shutdown -r 50 重启,延迟50分钟。
- shutdown -r now 立刻重启。
- shutdown -r 22:00 22:00重启。
- shutdown -c 取消一切关机 和 重启命令的执行。
- shutdown -f 重启时跳过磁盘检测。
- shutdown -F 重启时强制磁盘检测。
- systemctl
- systemctl halt 关CPU,但是不关电源 。
- systemctl poweroff 关机关电源,真正的关机。
- systemctl reboot 重启
- 以上关机命令必须在ROOT用户下执行。
- 在执行关机之前,执行一下sync命令。
- sync 将磁盘缓冲区的数据同步到硬盘中,以免数据丢失。在关机重启前都要执行。
Linux下查看文件和文件夹大小的df和du命令
当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择。
df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。
du可以查看文件及文件夹的大小。
[root@localhost ~]# df #列出各文件系统的磁盘空间使用情况 [root@localhost ~]# df -ia #列出各文件系统的i节点使用情况 [root@localhost ~]# df -T #列出文件系统的类型 [root@localhost ~]# df -h #目前磁盘空间和使用情况 以更易读的方式显示 [root@localhost ~]# df -k #以单位显示磁盘的使用情况 [root@rudder ~]# du #查看当前目录下的,所有文件和目录 [root@rudder ~]# du -ah #详细查看当前目录,子目录下的,所有文件和目录 [root@rudder ~]# du test.bz2 #查看单个文件 [root@bsso yayu]# du -h --max-depth=1 work/testing
du 统计文件大小相加
df 统计数据块使用情况
根据端口号查询进程pid
netstat -nptl
netstat -nptl |grep 8082
常见参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
pstree以树结构显示进程
pstree -aup |grep tomcat
删除文件
rm filename (rm -r 删除文件夹 rm -rf 强制删除文件或文件夹)
移动文件 修改文件名
mv a/wenjian1.txt b/file1.txt (移动文件的同时还修改了文件名)
tar 文件、目录打(解)包
tar -xzvf testdir.tar.gz 解压到当前目录下
tar -zxvf testdir.tar.gz -C Downloads/ 解压到指定的Downloads目录下
-c 建立一个压缩文件的参数指令(create)
-x 解开一个压缩文件的参数指令(extract)
-z 是否需要用 gzip 压缩
-j 是否需要用 bzip2 压缩
-v 压缩的过程中显示文件(verbose)
-f 使用档名,在 f 之后要立即接档名(file)
jinfo用法
jinfo是jdk自带的命令,用来查看jvm的配置参数。通常会先使用jps查看java进程的id,然后使用jinfo查看指定pid的jvm信息
查看所有的参数
jinfo process_id
查看jvm的参数
jinfo -flags process_id
查看java系统参数
jinfo -sysprops process_id
防火墙&开放端口
Centos 7 firewall 命令:
查看已经开放的端口:
firewall-cmd --list-ports
开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
重启防火墙
firewall-cmd --reload #重启firewall
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
CentOS 7 以下版本 iptables 命令
---如要开放80,22,8080 端口,输入以下命令即可【命令方式】
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
---如要开放80 端口,输入以下命令即可【手动方式】
vi /etc/sysconfig/iptables 打开配置文件加入如下语句: -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 重启防火墙,修改完成
然后保存:
/etc/rc.d/init.d/iptables save
重启防火墙,修改生效
service iptables restart
查看打开的端口:
/etc/init.d/iptables status
关闭防火墙
1) 永久性生效,重启后不会复原
开启: chkconfig iptables on
关闭: chkconfig iptables off
2) 即时生效,重启后复原
开启: service iptables start
重启: service iptables restart
关闭: service iptables stop
状态: service iptables status
需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。
查看文本文件内容
cat wodeqingshu.txt
more wodeqingshu.txt 可以分页看
less wodeqingshu.txt 不仅可以分页,还可以方便地搜索,回翻等操作
空格--翻页;向下/上的箭头----上下翻行;shift+g--文件末尾;gg--文件开始;
先按冒号,再按“/关键字”---搜索
tail -10 wodeqingshu.txt 查看文件的尾部的10行
程序打出的日志在生产实践中具有非凡的debug的意义
tail -f user.log 实时刷新显示文件的尾部
head -20 wodeqingshu.txt 查看文件的头部20行
Vim编辑器
1.1 Vi简介
vi / vim 是Unix / Linux上最常用的文本编辑器而且功能非常强大。
只有命令,没有菜单。
Vim工作模式:
1.2 编辑使用的快捷键
i 在光标前插入
I 在光标当前行开始插入
a 在光标后插入
A 在光标当前行末尾插入
o 在光标当前行的下一行插入新行
O 在光标当前行的上一行插入新行
yy复制当前行
yw复制一个单词
y$复制光标到结尾
y^复制光标到行首
#yy复制#行
#yw复制#个单词
m,ny复制m到n行内容
粘贴在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴
1.3 Vi编辑定位使用命令
:set nu 显示行号
:set nonu 取消行号
gg 到文本的第一行
G 到文本的最后一行
o 新建一行
:n 到文本的第n行
1.4 删除键及命令
x 删除光标所在处字符
nx 删除光标所在处后的n个字符
dd 删除光标所在行。ndd删除n行
dG 删除光标所在行到末尾行的所以内容
D 删除光标所在处到行尾的内容
:n1,n2d 删除指定范围的行
1.5 替换和取消命令及键
u undo,取消上一步操作
Ctrl + r redo,返回到undo之前
r 替换光标所在处的字符
R 从光标所在处开始替换,按Esc键结束
Shift+ zz 保存退出,与“:wq”作用相同
v 进入字符可视模式(选中)
V 或 Shift + v 进入行可视模式(整行选中)
Ctrl + v 进入块可视模式(按照块选中)
1.6 查找
命令模式下,输入 /word 后回车,即查找word,
按 n 查找下一个匹配单词,按 N 查找上一个匹配单词。
/后跟查找的字符串。vim会显示文本中第一个出现的字符串。
?后跟查找的字符串。vim会显示文本中最后一个出现的字符串。