linux 笔记 -xyq
- 1、命令
- 2、其余
- [x] 2017.08.22–now
xyq
linux
note
gitlab gitee 作业部落 CSDN 马克飞象 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/saiwen/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 /\ xargs ls -hlrt |
----------------- |
-------------------------------------------------------------- |
从旧到新并显示大小 | 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 /\ grep tomcat |
----------------- |
-------------------------------------------------------------- |
上传 | 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”就代替了“EOF”的性能。后果是雷同的。> 追加内容
> 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 -pSai.web123 YCKPLUS < /opt/sql/uccpplus_v4_0_5.sql
mysql 导入时呈现 "ERROR at line : Unknown command'\''." 的解决办法
mysql -uroot -p12344 --default-character-set=utf8 IMP_V12_1 < E:\isds-1.1.2.sql
导出查问语句 /opt/saiwen/mysql/bin/mysql -uroot -p12344 -e "use YCKPLUS;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 YCKPLUS DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
use YCKPLUS;
登录 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 `YCKPLUS`.* TO 'saiwen'@'192.171.1.18' identified by 'test12344' WITH GRANT OPTION;
grant all privileges on *.* to root@'%' identified by 'saiwen.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/saiwen/mysql/support-files/mysql.server start
/opt/saiwen/mysql/bin/mysqld_safe --user=mysql --basedir=/opt/saiwen/mysql --datadir=/opt/saiwen/mysql/data &
cd /opt/saiwen/mysql/
./bin/mysqld_safe &
chmod -R 775 mysql
cd /data/saiwen/mysql/&&./bin/mysqld_safe &
cd /opt/saiwen/mysql/ && bin/mysqld_safe --user=root &
1.3.2 mongo
mongo 笔记
配置文件启动
cd /opt/saiwen/mongodb
./bin/mongod --config /opt/mongodb/conf/mongo.conf
自定义门路启动
/opt/saiwen/mongodb/bin/mongod --dbpath=/opt/saiwen/mongodb/data --logpath=/opt/saiwen/mongodb/logs --logappend --port=27017 --fork
登陆 mongo
cd /opt/saiwen/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 saiwen12344
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/saiwen/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/saiwen/jdk1.6.0_45
export JRE_HOME=/opt/saiwen/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
<h3 id=”IP”></h3>
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
<h3 id=”knowledge”></h3>
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_uccp_db_1
sql="use YCKPLUS;select id,loginName,name,password,idcard,field29 from T_USER where loginName='admin'\G;"
#docker exec -it ${docker_name} mysql -uroot -psaiwen.web123 -e $sql >> $file
docker exec -i mobile_uccp_db_1 mysql -uroot -psaiwen.web123 -e "select now();use YCKPLUS;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/saiwen/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 20A 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 组。
<h3 id=”userGroup”></h3>
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 中,而不用来到 其余用户组
<h2 id=”endOther”></h2>
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.csdn.net/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
==============================================================