1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

# 设置 Tomcat 目录和相关命令路径
tomcat_home="/data/tomcat/tomcat-8484"
SHUTDOWN="$tomcat_home/bin/shutdown.sh"
STARTTOMCAT="$tomcat_home/bin/startup.sh"

# 添加错误处理
set -e

# 参数校验
if [ $# -ne 1 ]; then
    echo "Usage: $0 {start|stop|restart|logs}"
    exit 1
fi

# 根据传入参数执行不同操作
case $1 in
    start)
        echo "启动 $tomcat_home"
        # 检查 Tomcat 是否已经在运行
        if ps -p $(pgrep -f "catalina\.home=$tomcat_home") &>/dev/null; then
            echo "Tomcat 已经在运行"
            exit 1
        fi
        $STARTTOMCAT
        cd $tomcat_home/logs
        tail -f catalina.out
        ;;
    stop)
        echo "关闭 $tomcat_home"
        # 优化停止 Tomcat 的方式
        if [ -f "$SHUTDOWN" ]; then
            $SHUTDOWN
        else
            netstat -anp | grep 8484 | grep -v grep | awk '{print $7}' | sed -e 's//java//g' | sed -e 's/^/kill -9 /g' | sh
        fi
        ;;
    restart)
        echo "重启 $tomcat_home"
        $0 stop
        sleep 5
        $0 start
        ;;
    logs)
        echo "查看 Tomcat 日志:"
        cd $tomcat_home/logs
        tail -f catalina.out
        ;;
    *)
        echo "Invalid option. Usage: $0 {start|stop|restart|logs}"
        exit 1
        ;;
esac
1
2
sed -i "s/ //" tomcat-8484.sh #设置脚本文件为unix格式
chmod 777 ./tomcat-8484.sh

有这样一个场景,公司为了安全起见,需要对所有登录Linux服务器做安全限制,要求除了管理员其他要登录linux服务器的员工不能用最高权限账号登录,要创建新的用户,对目录及文件权限做出控制,只能对需要操作的目录允许读,写,执行权限,其他目录只有读的权限,并且所有tomcat不能直接在bin中用startup.sh,shutdown.sh进行启动和停止,要通过写shell脚本进行此操作,也就是说有两个步骤,创建用户并设置权限,写tomcat启动脚本

1
2
3
4
5
6
groupadd tomcat #加组 
useradd -g tomcat -s /usr/sbin/nologin tomcat #向组加用户 
usermod -L tomcat #锁定密码,使密码无效 
passwd tomcat # 设置密码
chown -R tomcat:tomcat /data #分配权限给用户
[root@localhost data]# ls -l total 0 drwxr-xr-x. 4 tomcat tomcat 79 May 20 08:03 tomcat [root@localhost data]#