1.查找文件,比如在linux
find / -name “maven”
2.查找目录
find / -name “maven” -type d
1.删除所有包含gitlab文件:find / -name gitlab | xargs rm -rf
2.source命令执行完脚本在进入的目录,不会回到执行脚本的目录,./方式执行脚本执行完毕后回到执行脚本的目录。
3.ubuntu查看软件包是否安装:
dpkg -s 软件包名
如:dpkg -s ssh
CentOS查看软件包安装:
rpm -qa|grep 软件包名
如:rpm -qa|grep ssh
ps:查看安装目录在哪:rpm -ql xxx(前面使用rpm -qa列出的软件包名)
4.ubuntu查看所以服务:
service –status -all
5.压缩命令
压缩:
将test文件压缩为名为test.zip
zip -q -r test.zip test
解压:
unzip test.zip解压到当前目录
unzip test.zip -d /usr/local解压到指定目录/usr/local
5.crontab语法及应用
1:查看当前用户的定时任务
[oracle@localhost ~]$ crontab -l
-
-
-
-
- /home/oracle/test.sh >/dev/null 2>&1
-
-
-
2:编辑当前用户的定时任务
可以在编辑状态修改、删除、新增一些定时任务。注释一般用#
[oracle@localhost ~]$ crontab -e
3:删除当前用户的定时任务
[root@localhost ~]# crontab -r
[root@localhost ~]# crontab -l
no crontab for root
下面列举几个例子供大家参考
1: 59 23 * * * /home/oracle/scripts/alert_log_archive.sh >/dev/null 2>&1
表示每天23点59分执行脚本/home/oracle/scripts/alert_log_archive.sh
2: /5 * * * /home/oracle/scripts/monitoring_alert_log.sh >/dev/null 2>&1
表示每5分钟执行一次脚本/home/oracle/scripts/monitoring_alert_log.sh
3: 0 20 * * 1-5 mail -s “****” [email protected] < /tmp/maildata
周一到周五每天下午 20:00 寄一封信给 [email protected]
……………………………………….
关于 >/dev/null 2>&1 的解释:
0表示键盘输入
1表示标准输出
2表示错误输出.
我们首先创建test.sh脚本如下:
#! /bin/sh
echo "hello, everybody, now is " `date`
date >> test.txt
然后添加作业
-
-
-
-
- /home/oracle/test.sh >/home/oracle/log.txt & 默认值为1,即和下面命令一致
-
-
-
-
-
-
-
- /home/oracle/test.sh 1>/home/oracle/log.txt &
-
-
-
-
-
-
-
- /home/oracle/test.sh 2>/home/oracle/log.txt &
-
-
-
-
-
-
-
- /home/oracle/test.sh 2>/home/oracle/log.txt 2>&1 &
-
-
-
1,2将tesh.sh 命令输出重定向到log.txt, 即输出内容不打印到屏幕上,而是输出到log.txt文件中。如果你需要追加而不是覆盖,可以用 >>代替>
2>&1 是将错误输出重定向到标准输出。 然后将标准输入重定向到文件log.txt。
&1 表示的是文件描述1,表示标准输出,如果这里少了&就成了数字1,就表示重定向到文件1。
注意事项:
配置定时任务时,需要注意两个问题:
1: 在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置
2: 尽量所有的文件都采用完全路径方式,避免使用相对路径。
5.linux通过端口号查找程序执行路径
比如80端口
netstat -antlp|grep 80
结果如下:
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1684/nginx
tcp 0 0 172.16.78.165:6379 116.62.184.190:34180 ESTABLISHED 1560/redis-server 0
tcp 0 0 172.16.78.165:34180 116.62.184.190:6379 ESTABLISHED 1558/java
tcp 0 0 172.16.78.165:34042 140.205.140.205:80 ESTABLISHED 1476/AliYunDun
6.查看文件权限和更改文件访问权限
ls -l或者ll如下:
drwxr-xr-x 6 root root 4096 Jan 12 11:18 soft
-rwxrwxrwx 1 root root 433 Jan 11 11:20 startAll.sh
共10位。横线“-”表示是文件,“d”表示是目录或文件夹。后面3位一组,共9个字符。每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。
权限字符用横线”-“代表空许可,r代表只读,w代表写,x代表可执行。
如上面代码所示每个字母位置代表2进制的数字:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
权限设置2种形式:
1.包含字母和操作符表达式的文字设定法;
2.包含数字的数字设定法。
推荐使用第一种,因为表示比较清楚,第二种对老手来说较方便。
权限设置对应:文件属主u,与文件属主同组用户g,其他用户o删除执行权限顺序设置。
6.1. 文字设定法:
语法:
chmod [who] [+ | - | =] [mode] 文件名
chmod是命令名
who值有:文件属主u,与文件属主同组用户g,其他用户o,所以用户a
操作:+增加权限,-删除权限,=表示只有指定的权限
mode值:r :读权限。w :写权限。 x :执行权限。- :删除权限。
比如
1.增加test.sh文件属主只读权限
chmod u+r test.sh
2.删除test.sh文件属主(所有者)只读权限
chmod u-r test.sh
3.test.sh文件属主只有只读权限
chmod u=r test.sh
其它组权限设置如上一样,只是把“u”换成“g”或“o”或”a”。可以多组设置,中间用逗号隔开如下:chmod u+r,g+x test.sh
是不是用包含字母和操作符表达式的文字设定法用起来比较清楚。
6.2数字设定法
语法:
chmod [mode] 文件名
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
- :删除权限,用数字0表示
其顺序是(u)(g)(o)。
例如想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)=6(读/写)。
数字与字符对应关系如下:
r=4,w=2,x=1
若要rwx属性则4+2+1=7
若要rw-属性则4+2=6;
若要r-x属性则4+1=7。
例如
chmod 751 file
说明:
给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
7.chown更改某个文件或目录的所有者
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
1.命令格式:
chown [选项]… [所有者][:[组]] 文件…
2.命令功能:
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
3.命令参数:
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
1.改变拥有者和群组
chown ssh:ssh log.log
2.只改变拥有者
chown chenyuan log.log
3.只改变群组
chown :ssh log.log
chmod与chown区别和联系。
chmod:ch是change缩写,mod是权限,作用是重新设定不同的访问权限
chown:ch同上,own是拥有者,作用是更改某个文件或目录的所有者
chgrp:ch同上,grp是group缩写,作用是更改某个文件或目录的用户组。
8.查看端口占用情况
netstat -tulnp
结果类似如下:
[root@izbp1hx8v6lzadot5plxh2z vsftpd]# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 2211/redis-server 0
tcp 0 0 127.0.0.1:8205 0.0.0.0:* LISTEN 2226/java
tcp 0 0 0.0.0.0:8109 0.0.0.0:* LISTEN 2126/java
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2195/nginx
tcp 0 0 0.0.0.0:8209 0.0.0.0:* LISTEN 2226/java
tcp 0 0 127.0.0.1:8405 0.0.0.0:* LISTEN 2255/java
tcp 0 0 0.0.0.0:8181 0.0.0.0:* LISTEN 2126/java
tcp 0 0 0.0.0.0:8182 0.0.0.0:* LISTEN 2226/java
tcp 0 0 0.0.0.0:8184 0.0.0.0:* LISTEN 2255/java
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 1576/sshd
tcp 0 0 0.0.0.0:8409 0.0.0.0:* LISTEN 2255/java
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 2195/nginx
tcp 0 0 0.0.0.0:8188 0.0.0.0:* LISTEN 2287/java
tcp 0 0 127.0.0.1:8805 0.0.0.0:* LISTEN 2287/java
tcp 0 0 0.0.0.0:8809 0.0.0.0:* LISTEN 2287/java
tcp 0 0 127.0.0.1:8105 0.0.0.0:* LISTEN 2126/java
udp 0 0 0.0.0.0:68 0.0.0.0:* 978/dhclient
udp 0 0 172.16.78.165:123 0.0.0.0:* 1186/ntpd
udp 0 0 127.0.0.1:123 0.0.0.0:* 1186/ntpd
udp 0 0 0.0.0.0:123 0.0.0.0:* 1186/ntpd
udp 0 0 0.0.0.0:16836 0.0.0.0:* 978/dhclient
列出了系统所以被使用的端口及进程名,pid