linux笔记-xyq
gitee 作业部落 优快云 马克飞象 typora
1、命令说明
1.1 常用命令
说明 命令 进入目录 cd dir1 创建目录 mkdir dir1 创建多级目录 mkdir -p d1/d2/d3 查看当前目录 pwd 复制文件 cp srcname targetname 复制目录 cp -r dir1/ dir2/ 修改名称(移动文件) mv readme.txt readme.doc 跨服务器复制 scp /data/ROOT.tar.gz root@192.168.239.35:/opt/sudytech/db_backup 删除普通文件a.txt rm a.txt (-f:表示强制) 目录a删除 rm -rf a (-f:表示强制; -r:表示目录) 建立新文件 touch test.txt 清空文件 cat /dev/null >json.log -----------------
--------------------------------------------------------------
查看磁盘空间 df -h 查看文件大小 du -h filepath 显示文件或目录类型 file test 查询程序的位置 which test 统计文件信息 wc testfile 3 92 598 testfile testfile文件的行数为3、单词数92、字节数598 -----------------
--------------------------------------------------------------
压缩tar tar -zcvf /home/love.tar.gz /home/yx/love 解压tar tar -zxvf /home/love.tar.gz 压缩zip zip test.zip test 解压zip unzip test.zip 压缩gz gzip -c test.log > /root/test.gz 解压gz gunzip -c debug.2020-07-02.log.gz > ./0702.log -----------------
--------------------------------------------------------------
模糊查找当前目录文件 find *txt 从根目录查找文件 find / -name test 查找文件 find /home -name ‘test.log’ -type f -print 查找目录 find / -name ‘tech’ -type d -print 查找当前目录及子目录文件 find . -name “root ” -maxdepth 1 (maxdepth指层数) 查找大文件 find / -type f -size +400M -----------------
--------------------------------------------------------------
从旧到新并显示大小 ls -hlrt (ls -lrt 从旧到新) 从新到旧并显示大小 ls -hlt (ls -lt 从新到旧 ) 按大小升序 ls -hSlr 按大小降序 ls -hSl 模糊查找文件 ls name* (ls /etc/rc.d/init.d/my*) 显示当前目录文件 ls -----------------
--------------------------------------------------------------
查看linux版本 cat /proc/version lsb_release -a 查看linux内核版本 uname -a 查看centos版本 cat /etc/redhat-release 查看java版本 java -version 查看进程 ps 查看tomcat进程 ps -ef -----------------
--------------------------------------------------------------
上传 sz filename (安装上传下载 yum install lrzsz) 下载 sz 显示10行历史记录 history 10 查看ip ifconfig 清楚屏幕 clear 查看时间 date 时间格式化 date “+%Y-%m-%d %H:%M:%S” 查看指定年月日历 cal 3 2013 建立链接 ln -fs /opt/tech/mysql/bin/mysql /usr/local/bin/mysql 删除链接 rm -rf name 查看所有别名 alias 添加别名 alias test="tar -zcvf " 删除别名 unalias test 显示所有分区的信息 fdisk -l 帮助 help 查看命令手册 man ls 树状结构展示目录 tree (安装tree命令 yum install tree) 输出重定向(保存文件) ls > dir.txt 追加文件 ls >> dir.txt -----------------
--------------------------------------------------------------
关机 halt 重启 reboot 关机重启 shutdown -r 关机不重启 shutdown -h 立刻关机 shutdown now
1.2 命令说明
1.2.1 vi操作
: wq ( 输入「wq」,存盘并退出vi)
: q! ( 输入q! , 不存盘强制退出vi)
: set fileencoding 查看文件编码
: set nu 显示行数
查找 / 关键字
按「G」:移动到文章的最后。
按「g」:移动到文章的开头。
dd : 删除当前行
x : 删除光标位置字符
u :后退 返回 上一步
/ string 向前搜索指定字符串
? string 向后搜索指定字符串
n 搜索指定字符串的下一个出现位置
N 搜索指定字符串的上一个出现位置
: % s/ old/ new / g 全文替换指定字符串
1.2.2 环境变量export
查看所有环境变量 export
查看环境变量 echo $PATH
export $hello
设置临时环境变量 export PATH= $PATH: / usr/ local/ mysql/ bin
export hello= "hello world"
设置系统环境变量
vi / etc/ profile
export PATH= $PATH: / usr/ local/ mysql/ bin
export hello= "hello world"
需要注意的是:修改完这个文件必须要使用 以下命令在不用重启系统的情况下使修改的内容生效。
source / etc/ profile
或者是用 ‘. ’:
. / etc/ profile
查看:
echo $PATH
/ usr/ kerberos/ sbin: / usr/ kerberos/ bin : / usr/ local/ sbin: / usr/ local/ bin : / sbin: / bin : / usr/ sbin: / usr/ bin : / root/ bin : / usr/ local/ mysql/ bin
echo $hello
hello world
配置已经生效
1.2.3 head tail less more
1 . 如果你只想看文件的前100 行,可以使用head 命令,如
head - 100 filename
2 . 如果你想查看文件的后100 行,可以使用tail 命令,如:
tail - 100 filename 或 tail - n 100 filename
3 . 查看文件中间一段,你可以使用sed 命令,如:
sed - n '100 , 200p' filename
这样你就可以只查看文件的第100 行到第200 行。
截取的文件可以用重定向输入到新的文件中:
head - 100 filename > a . txt
tail - f cata . log 打印日志
cat test . txt 显示文件开头
tac test . txt 显示文件结尾
more test . txt 逐页显示文件
less test . txt 逐页显示文件(优化more )
head - n 20 test . txt 显示文件前20 行 head - 100 filename
tail - n 20 test . txt 显示文件后20 行 tail - 100 filename
如果文件太长,用cat 命令只能看到文件的最后一页,而用more 命令时可以一页一页地显示。执行more 命令后,进入more 状态,用【Enter 】键可以向后移动一行;用【Space 】键可以向后移动一页;用“q ”键可以退出。在more 状态下还有许多功能,可用man more 命令获得。
less 实际上是more 的改进版,其命令的直接含义是more 的反义。less 的功能比more 更灵活。例如:用【Pgup 】键可以向前移动一页,用【Pgdn 】键可以向后移动一页,用向上光标键可以向前移动一行,用向下光标键可以向后移动一行。“q ”键、【Enter 】键、【Space 】键的功能和more 类似。
用【G 】键可以移动文件到结尾,用【g 】键可以移动到文件开头。
1.2.4 cat详解
cat命令是linux下的一个文本输出命令,通常是用于观看某个文件的内容。
cat主要有三大功能:
1. 一次显示整个文件。
$ cat filename
2. 从键盘创建一个文件。
$ cat > filename
只能创建新文件, 不能编辑已有文件
3. 将几个文件合并为一个文件。
$cat file1 file2 > file
cat具体命令格式为 : cat [ - AbeEnstTuv] [ -- help] [ -- version] fileName
说明:把档案串连接后传到基本输出( 屏幕或加 > fileName 到另一个档案)
参数:
- n 或 –number 由 1 开始对所有输出的行数编号
- b 或 –number- nonblank 和 - n 相似,只不过对于空白行不编号
- s 或 –squeeze- blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
- v 或 –show- nonprinting
范例:
cat - n linuxfile1 > linuxfile2 把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
cat - b linuxfile1 linuxfile2 >> linuxfile3 把 linuxfile1 和 linuxfile2 的档案内容加上行号( 空白行不加) 之后将内容附加到linuxfile3 里。
范例:
把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
cat - n linuxfile1 > linuxfile2
把 linuxfile1 和 linuxfile2 的档案内容加上行号( 空白行不加) 之后将内容附加到 linuxfile3 里。
cat - b linuxfile1 linuxfile2 >> linuxfile3
cat / dev/ null > / etc/ test. txt 此为清空/ etc/ test. txt档案内容
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
cat << EOF的语句说明
EOF是“end of file”,表示文本结束符。EOF在这里没有特殊的含义,你可以使用FOE或OOO等(当然也不限制在三个字符或大写字符)。
简单描述一下常见的使用方式及其作用:
1 、cat<< EOF,以EOF输入字符为标准输入结束:
2 、cat> filename,创建文件,并把标准输入输出到filename文件中,以ctrl+ d作为输入结束:
注意:输入时是没有'>' 的。
3 、cat> filename<< EOF,以EOF作为输入结束,和ctrl+ d的作用一样。
命令:
$ cat > test. txt << EOF
> 说明cat及EOF
> 测试
> EOF
$ cat test. txt
说明cat及EOF
测试
其他写法:
cat >> test. txt << EOF 在test. txt里追加内容,不会覆盖原有文件。
$ cat >> test. txt << END
> 追加内容
> END
$ cat test. txt
说明cat及EOF
测试
追加内容
1.2.5 grep
grep命令
查询文件中内容并保存
more linux.txt | grep mysql > test.txt // > 创建新文件
cat linux.txt | grep 软件 >> test.txt // >> 是在文件中追加内容
grep mysql linux.txt > test.txt
查询文件内容行数
cat linux.txt | grep mysql | w -l
查询运行的进程
ps -ef | grep mysql
ps -ef | grep java
-e 显示所有进程。
-f 全格式。
grep '^root' /etc/group 匹配正则表达式的开始行
grep 'root$' /etc/group 匹配正则表达式的结束行
RE(正则表达式)
\ 忽略正则表达式中特殊字符的原有含义
^ 匹配正则表达式的开始行
$ 匹配正则表达式的结束行
\< 从匹配正则表达式的行开始
\> 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
* 所有字符,长度可以为0
1.3 软件操作及安装
1.3.1 mysql
指令 ps - ef| grep mysql 得出结果
root 17659 1 0 2011 ? 00 : 00 : 00 / bin/ sh / usr/ bin/ mysqld_safe -- datadir= / var/ lib/ mysql -- socket= / var/ lib/ mysql/ mysql. sock -- log- error= / var/ log/ mysqld. log -- pid- file= / var/ run/ mysqld/ mysqld. pid
mysql 17719 17659 0 2011 ? 03 : 14 : 57 / usr/ libexec/ mysqld -- basedir= / usr -- datadir= / var/ lib/ mysql -- user= mysql -- pid- file= / var/ run/ mysqld/ mysqld. pid -- skip- external- locking -- socket= / var/ lib/ mysql/ mysql. sock
usr/ bin/ mysql 是指:mysql的运行路径
var/ lib/ mysql 是指:mysql数据库文件的存放路径
usr/ lib/ mysql 是指:mysql的安装路径
导出数据库 / opt/ tech/ mysql/ bin/ mysqldump - uroot - p1234 webpro > / opt/ tech/ 20170814. sql
导入数据 mysql - uroot - pSudy. web123 UCPPLUS < / opt/ sql/ ucpplus_v4_0_5. sql
mysql导入时出现"ERROR at line : Unknown command '\''." 的解决办法
mysql - uroot - p12344 -- default - character- set= utf8 IMP_V12_1 < E: \ids- 1.1 .2 . sql
导出查询语句 / opt/ sudytech/ mysql/ bin/ mysql - uroot - p12344 - e "use IDSPLUS;select id,loginName from T_USER where id=1\G;" >> / opt/ test. txt
导出表 / opt/ tech/ mysql/ bin/ mysqldump - uroot - p1234 webpro t_user > / opt/ tech/ t_user. sql
创建数据库
CREATE DATABASE UCPPLUS DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
use UCPPLUS;
登录mysql / opt/ tech/ mysql/ bin/ mysql - uroot - p1234
/ opt/ tech/ mysql/ bin/ mysql - uroot - padmin
创建、使用数据库 create database test; use test;
导入sql数据 source / root/ 20151010. sql
复制表数据到新表
CREATE TABLE T_MENU1 LIKE T_MENU;
INSERT INTO T_MENU1 SELECT * FROM T_MENU;
/ opt/ tech/ apache- tomcat- 6.0 .45 / webapps/ add20170814. sql
修改max_allowed_packet vi / etc/ my. cnf
58.246 .98 .94
mysql - u root - p12344
navicat连接mysql失败,授权:
GRANT ALL PRIVILEGES ON `db1`. * TO 'user1' @'192.171.1.18' identified by 'pwd1' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `IDSPLUS`. * TO 'sudy' @'192.171.1.18' identified by 'shhg12344' WITH GRANT OPTION;
grant all privileges on * . * to root@'%' identified by 'Sudy.web123' with grant option;
-- flush privileges;
查询权限
select * from mysql. user
select Host, User, password_last_changed from mysql. user
取消权限
revoke all on * . * from 'root' @'192.168.0.197' ;
删除用户权限
Delete from mysql. user where user = "user_name" and host = "host_name" ;
linux 的mysql配置文件 / etc/ my. cnf
查看编码
show variables like 'character%' ;
设置编码
set character_set_server= 'utf8' ;
查看sql_mode
SELECT @@GLOBAL . sql_mode;
识别大小写
lower_case_table_names = 2
启动mysql
/ opt/ sudytech/ mysql/ support- files/ mysql. server start
/ opt/ sudytech/ mysql/ bin/ mysqld_safe -- user= mysql -- basedir= / opt/ sudytech/ mysql -- datadir= / opt/ sudytech/ mysql/ data &
cd / opt/ sudytech/ mysql/
. /bin/ mysqld_safe &
chmod - R 775 mysql
cd / data/ sudytech/ mysql/ && . /bin/ mysqld_safe &
cd / opt/ sudytech/ mysql/ && bin/ mysqld_safe -- user= root &
1.3.2 mongo
mongo笔记
配置文件启动
cd /opt/sudytech/mongodb
./bin/mongod --config /opt/mongodb/conf/mongo.conf
自定义路径启动
/opt/sudytech/mongodb/bin/mongod --dbpath=/opt/sudytech/mongodb/data --logpath=/opt/sudytech/mongodb/logs --logappend --port=27017 --fork
登陆mongo
cd /opt/sudytech/mongodb/bin
mongo
1.3.3 redis
windows下redis安装
http://www.runoob.com/redis/redis-install.html
进入redis目录
启动 redis-server.exe redis.windows.conf
登录 redis-cli.exe -h 127.0.0.1 -p 6379
redis-cli -a sudy12344
Redis 设置密码登录
修改redis.windows.conf
#requirepass foobared。设置密码的方法就是去掉注释的#,把foobared替换成自己的密码即可,例如将密码设置为123456
服务自启动
redis-server --service-install redis.windows.conf --loglevel verbose
问题 Invalid argument during startup: unknown conf file parameter : requirepass
redis 设置来密码,出现来这个错误,
把配置文件那一行的空格去掉
# requirepass foobared
改成
requirepass 123456
启动redis
./redis/src/redis-server ./redis/redis.conf &
关闭redis
./redis/src/redis-cli -h host -p port -a password shutdown
host值在./redis/redis.conf文件中搜索bind
port值在./redis/redis.conf文件中搜索port
password值在/redis/redis.conf文件中搜索requirepass
进入redis命令行
./redis/src/redis-cli -h host -p port -a password
[root@localhost src]# cd /opt/sudytech/custom/redis-2.8.17/
[root@localhost redis-2.8.17]# redis-server redis.conf //启动redis
[root@localhost ~]# redis-cli //进入redis客户端
127.0.0.1:6379> keys * //取出所有的key
(empty list or set)
127.0.0.1:6379> quit //退出客户端
127.0.0.1:6379> set key1 value1 //set
OK
127.0.0.1:6379> get key1 //get
"value1"
127.0.0.1:6379> del k1 //删除一个key
(integer) 1
127.0.0.1:6379> flushdb //清空所有数据
Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is running in protected mode because protected mode is enabled。。。。
进入客户端设置模式:
redis-cli
config set protected-mode "no"
1.3.4 tomcat命令
Linux下Tomcat的启动、关闭、杀死进程 (进入tomcat的bin目录 启动 sh startup.sh)
打开终端
进入tomcat目录
cd /Java/tomcat
#执行
bin/startup.sh #启动tomcat
bin/shutdown.sh #停止tomcat
tail -f logs/catalina.out #看tomcat的控制台输出;
#看是否已经有tomcat在运行了
ps -ef |grep tomcat
#如果有,用kill;
kill -9 pid #pid 为相应的进程号
例如 ps -ef |grep tomcat 输出如下
sun 5144 1 0 10:21 pts/1 00:00:06 /java/jdk/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/java/tomcat/common/endorsed -classpath :/java/tomcat/bin/bootstrap.jar:/java/tomcat/bin/commons-logging-api.jar -Dcatalina.base=/java/tomcat -Dcatalina.home=/java/tomcat -Djava.io.tmpdir=/java/tomcat/temp org.apache.catalina.startup.Bootstrap start
则 5144 就为进程号 pid = 5144
kill -9 5144 就可以彻底杀死tomcat
查看tomcat
ps -ef |grep tomcat
杀死tomcat
kill -9 pid //pid 为相应的进程号
启动tomcat
/opt/tech/appStore/apache-tomcat-6.0.35/bin/startup.sh
1.3.5 为每个tomcat配置单独的jdk
一、安装jdk,如jdk-6u45-linux-x64.bin
1、添加执行权限
chmod u+x jdk-6u45-linux-x64.bin
2、解压
./jdk-6u45-linux-x64.bin
二、配置tomcat的 ../bin/setclasspath.sh 在文件的开头添加以下
export JAVA_HOME=/opt/sudytech/jdk1.6.0_45
export JRE_HOME=/opt/sudytech/jdk1.6.0_45/jre
三、重启tomcat
部署多个tomcat主要修改三个端口:
1.HTTP端口,默认8080,如下改为8081
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="60000"
redirectPort="8443" disableUploadTimeout="false" executor="tomcatThreadPool" URIEncoding="UTF-8"/>
2.远程停服务端口,默认8005,如下改为8006
<Server port="8006" shutdown="SHUTDOWN">......
3.AJP端口,默认8009,如下改,8010
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
1.3.6 yum rpm安装卸载软件
yum安装:
# yum install 包名
yum卸载:
# yum -y remove 包名
查询所有安装软件 rpm -qa
查看是否安装软件 rpm -qa | grep java
卸载软件 rpm -e 如果提示有依赖,可以加上 --nodeps
[root@localhost openldap]# rpm -qa | grep openldap
openldap-2.4.44-15.el7_5.x86_64
openldap-servers-2.4.44-15.el7_5.x86_64
compat-openldap-2.3.43-5.el7.x86_64
[root@localhost openldap]# rpm -e --nodeps openldap-2.4.44-15.el7_5.x86_64
[root@localhost openldap]# rpm -e --nodeps openldap-servers-2.4.44-15.el7_5.x86_64
[root@localhost openldap]# rpm -e --nodeps compat-openldap-2.3.43-5.el7.x86_64
1.3.7 make安装卸载软件
用于linux源码安装软件,一般下载源码包得到文件:xxxx.tgz
1、解包软件
tar zxf xxxx.tgz
2、配置
cd xxxx
./configure ....
3、编译
make
4、安装
make install
5、卸载
make uninstall
1.4 IP及防火墙
1.4.1 查看ip及端口是否可以访问、开放端口
wget http: / / 127.0 .0 .1 : 8080
ping + ip : 查看某一个ip 地址是否能够连通,如: ping 114.80 .67 .193
telnet ip port : 查看某一个机器上的某一个端口是否可以访问,如:telnet 114.80 .67 .193 8080
netstat - nal 查看网络通信情况
查看端口占用
netstat - ntlp / / 查看当前所有tcp端口·
netstat - ntulp |grep 80 / / 查看所有80 端口使用情况·
netstat - an | grep 3306 / / 查看所有3306 端口使用情况·
查看开放的端口
firewall- cmd - - list- all
开放端口
firewall- cmd - - zone= public - - add- port= 4789 / udp - - permanent
firewall- cmd - - zone= public - - add- port= 80 / tcp - - permanent
firewall- cmd - - zone= public - - add- port= 80 / udp –permanen
firewall- cmd - - zone= public - - add- port= 8060 / tcp - - permanent
刷新
firewall- cmd - - reload
1.4.2 关闭centos的防火墙
一、firewall方式
firewall-cmd --state 查看防火墙状态
systemctl stop firewalld.service 关闭防火墙,centos7下
systemctl disable firewalld.service 关闭开机启动
二、service方式
查看防火墙状态:
[root@centos6 ~]# service iptables status
iptables:未运行防火墙。
开启防火墙:
[root@centos6 ~]# service iptables start
关闭防火墙:
[root@centos6 ~]# service iptables stop
/etc/sysconfig/iptables
三、iptables方式
先进入init.d目录,命令如下:
[root@centos6 ~]# cd /etc/init.d/
[root@centos6 init.d]#
然后
查看防火墙状态:
[root@centos6 init.d]# /etc/init.d/iptables status
暂时关闭防火墙:
[root@centos6 init.d]# /etc/init.d/iptables stop
重启iptables:
[root@centos6 init.d]# /etc/init.d/iptables restart
1.5 知识点
1.5.1 查看内存
top
free - m
cat / proc / meminfo 机器的内存使用信息
cat / proc / pid / maps pid 为进程号,显示当前进程所占用的虚拟地址。
cat / proc / pid / statm 进程所占用的内存
[ root @ localhost webapps ] # free
total used free shared buffers cached
Mem : 4043716 3783532 260184 0 31424 340132
-/+ buffers / cache : 3411976 631740
Swap : 2096472 993204 1103268
输入:free
total : 总计物理内存的大小
used : 已使用多大
free : 可用有多少
Shared : 多个进程共享的内存总额
Buffers / cached : 磁盘缓存的大小
第三行( -/+ buffers / cached )
used : 已使用多大
free : 可用有多少
第四行就不多解释了。
区别:第二行( mem ) 的used / free 与第三行( -/+ buffers / cache ) used / free 的区别。 这两个的区别在于使用的角度来看,第一行是从OS 的角度来看,因为对于OS ,buffers / cached 都是属于被使用,所以他的可用内存是260184KB, 已用内存是3783532KB, 第三行所指的是从应用程序角度来看,对于应用程序来说,buffers / cached 是等于可用的,因为buffer / cached 是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer / cached 会很快地被回收。所以从应用程序的角度来说,可用内存= 系统free memory + buffers + cached 。
如上例:631740 = 260184 + 31424 + 340132
1.5.2 linux标准输入输出2>&1
linux标准输入输出2>&1
/home/share/timerSearch/timerSearchDB.sh >> /home/share/timerSearch/record.txt 2>&1
linux中有三种标准输入输出,分别是STDIN,STDOUT,STDERR,对应的数字是0,1,2。
STDIN是标准输入,默认从键盘读取信息;STDOUT是标准输出,默认将输出结果输出至终端;STDERR是标准错误,默认将输出结果输出至终端。
由于STDOUT与STDERR都会默认显示在终端上,为了区分二者的信息,就有了编号的0,1,2的定义,用1表示STDOUT,2表示STDERR。
2>&1,指将标准输出、标准错误指定为同一输出路径
eg1:cat >>filetest 2>&1 <<END -------建立filetest文件,当输入遇到END时,退出
eg2:
1、以普通用户执行 find /etc -name passwd 命令,默认会将命令的执行结果(STDOUT)与错误信息(STDERR)都输出至终端显示器。
2、执行find /etc -name passwd >find.out 2>find.err,会将STDOUT与STDERR分别存放至find.out和find.err中。该命令也可以写成下面三种形式
find /etc -name passwd 1>find.out 2>find.err
find /etc -name passwd 2>find.err >find.out
find /etc -name passwd 2>find.err 1>find.out
3、若要将所有标准输出及标准错误都输出至文件,可用&表示全部1和2的信息,eg:
find /etc -name passwd &>find.all 或 find /etc -name passwd >find.all 2>&1
4、2>&1 ---标准错误重新定向到标准输出
5、用法:find /etc -name passwd &2>&1 |less
可分解成
find /etc -name passwd & 表示前面的命令放到后台执行。
2>&1 |less 表示将标准错误重定向至标准输出,并用less进行分页显示
https://www.cnblogs.com/jacob-tian/p/6110606.html
1.5.3 定时执行脚本笔记
定时查询docker的mysql数据库并保存
#!/bin/bash
#file=/home/share/timerSearch/record.txt
#crontab -uroot -e
#*/1 * * * * /bin/bash /home/share/timerSearch/timerSearchDB.sh >> /home/share/timerSearch/record.txt 2>&1
echo "===============begin========================="
echo "定时查询脚本启动了。。。"
date "+%Y-%m-%d %H:%M:%S"
docker_name=mobile_ucp_db_1
sql="use UCPPLUS;select id,loginName,name,password,idcard,field29 from T_USER where loginName='admin'\G;"
#docker exec -it ${docker_name} mysql -uroot -pSudy.web123 -e $sql >> $file
docker exec -i mobile_ucp_db_1 mysql -uroot -pSudy.web123 -e "select now();use UCPPLUS;select id,loginName,name,password,idcard,field29 from T_USER where loginName='admin'\G;" >> /home/share/timerSearch/recordDB.txt
echo ""
echo ""
#crontab -uroot -e
0 3 * * 5 /data/sudytech/shell/copyCasSecret.sh
说明:
分钟 小时 日 月 星期 命令
* * * * * *
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
1.5.4 文件权限
查看文件属性 ls - l test. sh
赋予执行权限 chmod + x test. sh
赋予全部权限 chmod 777 test. sh
改变文件属性(二进制) chmod #chmod 664 chap1. txt 110110100
改变文件属性(字母) chmod u= rw, g= rw, o= r chap1. txt r w x
改变文件所属用户 chown user1 chap1. txt
改变文件所属用户及所属组 chown user1: root chap1. txt
改变文件所属组 chgrp root chap1. txt
Linux系统是个多用户系统,应该能做到不同的用户能同时访问不同的文件,因此一定要有文件权限控制机制。Linux系统的权限控制机制和Windows的权限控制机制有着很大的差别。Linux的文件或目录都被一个用户拥有时,这个用户称为文件的拥有者( 或所有者) ,同时文件还被指定的用户组所拥有,这个用户组称为文件所属组。
用户 u -- 所属组 g -- 其他用户 o -- 所有用户 a
user - group - other - all
要说明的是,一个用户可以是不同组的成员,这可以由管理员控制,我们将在用户管理这一章介绍如何控制的问题。文件的权限由权限标志来决定,权限标志决定了文件的拥有者、文件的所属组、其他用户对文件访问的能力。可以使用“ls –l”命令来显示权限标志。例如:
[ test @redflag test] $ls - l
- rw- rw- r-- 1 longkey root 16 20 A 24 22 : 23 chap1. txt
本例中,文件chap1. txt的拥有者是longkey,所属组是root。这里我们特别关心的是输出行前面的第1 ~10 个字符。第1 个字符代表文件类别,第2 ~4 个字符“rw- ”是文件拥有者的权限,第5 ~7 个字符“rw- ”是文件所属组的权限,第8 ~10 个字符“r-- ”是其他用户( 即除了root用户和longkey用户组里的用户之外的用户) 文件拥有者的权限。而权限均用三个字符表示,依次为读( r) 、写( w) 、执行( x) ,如果某一位为“- ”,则表示没有相应的权限,例如:“rw- ”表示有读、写的权限,没有执行的权限。在本例中,文件拥有者longkey用户对文件有读、写的权限,root组的所有用户对文件也有读、写的权限,而其他用户对文件只有读的权限。
设定文件权限时,在模式中常用以下的字母代表用户或用户组:
u——文件的拥有者;
g——文件的所属组;
o——其他用户;
a——代表所有用户( 即u+ g+ o) 。
权限用以下字符表示:
r ——读权限;
w——写权限;
x——执行权限;
最后要指明是增加( + ) 还是减少( - ) 权限,或是绝对权限( = ) 。
[ root @redflag / root] chmod o+ w chap1. txt
chap1. txt的权限由原来的“rw- rw- r-- ”变为“rw- rw- rw- ”,表示增加其他用户对文件的写权限。
[ root @redflag / root] chmod u= rw, g= rw, o= r chap1. txt chap1. txt的权限变为“rwxrw- r-- - ”,不论原来的权限是什么,这表示拥有者对文件有读、写的权限,所属组的用户对文件也有读、写的权限,而其他用户只有读的权限。
我们在以上设置权限时,用字符表示权限和用户,实际上我们也经常使用八进制来表示。读、写、执行依次各自对应一个二进制位“? ? ? ”,如果某位为“0 ”,则表示无权限;如果某位为“1 ”,则表示有权限。例如:文件权限为r-- - w-- - x时,用二进制表示为100010001 ,用十进制可以表示为421 。例如:
[ root @redflag / root] #chmod 664 chap1. txt
等同于:
[ root @redflag / root] #chmod u= rw, g= rw, o= r chap1. txt
chown 用户名 文件或目录名——改变文件( 或目录) 的拥有者或所属组
例如:
[ root @redflag / root] #chown longkey chap1. txt
把文件chap1. txt的拥有者改为longkey用户。
[ root @redflag / root] #chown longkey: root chap1. txt
把文件的拥有者改为longkey用户,同时文件的所属组改为root组。
chgrp组 文件或目录——改变文件或目录的所属组
chown可以同时改变文件拥有者和所属者,chgrp只具有改变所属组的功能。例如:
[ root @redflag / root] #chgrp root chap1. txt
文件chap1. txt的所属组设为root组。
1.5.5 用户和组的管理
su 切换root
su user1 切换用户
groups 查看当前用户所在组
groups user1 查看user1用户所在的组
whoami 查看当前登录用户名
/ etc/ group 文件包含所有组及用户
/ etc/ shadow和/ etc/ passwd系统存在的所有用户名
创建用户 useradd user1;
设置用户密码 passwd user1;
删除用户 userdel user1;
删除用户(包括主目录文件 / home/ user1) userdel - r user1;
groupadd testgroup 组的添加
groupdel testgroup 组的删除
只有root和组管理员能够改变组的成员:
gpasswd –a user1 users 把 user1加入users组
gpasswd –d user1 users 把 user1退出users组
groupmod –n user users 修改组名user为users
锁定用户 passwd - l user1
解锁用户 passwd - u user1
用户添加到组
usermod - a - G groupA user
- a 代表 append, 也就是 将自己添加到 用户组groupA 中,而不必离开 其他用户组
2、其他
2.1 java进程高CPU占用故障排查
生产环境下JAVA进程高CPU占用故障排查
解决过程:
1 ,根据top命令,发现PID为2633 的Java进程占用CPU高达300 % ,出现故障。
2 ,找到该进程后,如何定位具体线程或代码呢,首先显示线程列表, 并按照CPU占用高的线程排序:
[ root@localhost logs] # ps - mp 2633 - o THREAD, tid, time | sort - rn
显示结果如下:
USER % CPU PRI SCNT WCHAN USER SYSTEM TID TIME
root 10.5 19 - - - - 3626 00 : 12 : 48
root 10.1 19 - - - - 3593 00 : 12 : 16
找到了耗时最高的线程3626 ,占用CPU时间有12 分钟了!
将需要的线程ID转换为16 进制格式:
[ root@localhost logs] # printf "%x\n" 3626
e18
最后打印线程的堆栈信息:
[ root@localhost logs] # jstack 2633 | grep e18 - A 30
总结:
1. 先使用top命令查询java占用cpu高的进程
2. 使用 ps - mp 查找出该进程下里面耗用时间长的线程
3. 使用printf "%x\n" 3626 将线程转换为16 进制
4. 使用 jstack 2633 | grep e18 - A 30 使用此命令打印出该进程下面的此线程的堆栈信息
2.2 修改linux时间
http: / / blog. chinaunix. net/ uid- 20672257 - id- 3013282. html
调整linux系统时间和时区与Internet时间同步
一、修改时区:
# cp / usr/ share/ zoneinfo/ Asia/ Shanghai / etc/ localtime
修改为中国的东八区
# vi / etc/ sysconfig/ clock
ZONE= "Asia/Shanghai"
UTC= false
ARC= false
二、配置新的时间
日期设定:
# date - s 2008 / 05 / 06
时间设定:
# date - s 18 : 40 : 00
查看硬件时间(BIOS的):
hwclock [ - rw]
- r: 查看现有BIOS时间,默认为-r参数
- w: 将现在的linux系统时间写入BIOS中
当我们进行完 Linux 时间的校时后,还需要以 hwclock - w 来更新 BIOS 的时间,因为每次开机的时候,系统会重新由 BIOS 将时间读出来,所以, BIOS 才是重要的时间依据。
# hwclock
Tue 06 May 2008 03 : 49 : 37 PM CST - 0.039646 seconds
同步BIOS时钟,强制把系统时间写入CMOS:
# clock - w
先使用 date - s 10 / 17 / 2008 修改日期
然后 date - s 10 : 12 : 13 修改时间
clock - w 写入bios
2.3 修改句柄
查看句柄
ulimit -n
修改句柄 有三种办法:
https://blog.youkuaiyun.com/skieske/article/details/79261469
①:ulimit -n 65536
这种是一次性的,当服务器重启或者重新登录服务器就会变成1024
②:vi /etc/security/limits.conf
修改linux系统参数。添加
* soft nofile 65536
* hard nofile 65536
这种办法需要重启服务器
③:vim /etc/profile
添加/或者修改:
ulimit -SHn 65536
然后使修改生效:
source /etc/profile
然后再ulimit -a
建议三种方法都要试一下
2.4 问题
history 历史记录显示时间
在/ etc/ profile 中增加 export HISTTIMEFORMAT= "%Y-%m-%d %H:%M:%S "
写入环境变量 source / etc/ profile
centos7虚拟机不能上网
在存储linux目录的CentOS. vmx文件加入 ethernet0. virtualDev = "e1000" 再重启虚拟机
linux虚拟机上传下载文件
打开虚拟机linux,使用命令 ifconfig 查看ip,再使用xshell连接。
微信企业号连接超时: connect timed out
wget https://qyapi.weixin.qq.com/cgi-bin/gettoken
ping qyapi.weixin.qq.com
1、可能是防火墙打开了
2、/etc/hosts 策略配置错了
2.5 星期月份英语
==============================================================
星期一: Mon.=Monday Monday
星期二: Tues.=Tuesday Tuesday
星期三: Wed.=Wednesday Wednesday
星期四: Thur.=Thursday Thurday
星期五: Fri.=Friday Friday
星期六: Sat.=Saturday Saturday
星期天: Sun.=Sunday Sunday
一月份=JAN. Jan.=January January
二月份=FEB. Feb.=February February
三月份=MAR. Mar.=March March
四月份=APR. Apr.=April April
五月份=MAY May=May May
六月份=JUN. Jun.=June June
七月份=JUL. Jul.=July July
八月份=AUG. Aug.=August August
九月份=SEP. Sept.=September September
十月份=OCT. Oct.=October October
十一月份=NOV. Nov.=November November
十二月份=DEC. Dec.=December December
东西南北 East West South North === e w s n
==============================================================