সিস্টেমড থেকে জাভা প্রক্রিয়া চলছে


16

আমি সিস্টেমড থেকে শেল স্ক্রিপ্ট কার্যকর করার চেষ্টা করছি স্ক্রিপ্টটি কমান্ড লাইন থেকে সূক্ষ্মভাবে চলে।

স্ক্রিপ্ট (runServer.sh), একটি জাভা প্রক্রিয়া চালিত করে এবং এর মতো দেখায়:

#!/bin/bash
java -jar -Dresources=/home/pruss/dev/ServerDeploy5-4.1/Server/resources/MyServer.jar "0" "Test"

ভিতরে /usr/lib/systemd/system(বা /lib/systemd/system/অন্যান্য ওএসে) আমি একটি সার্ভিস ফাইল তৈরি করেছি (মাই সার্ভিস। সার্ভিস):

[Unit]
Description=My Servers service
[Service]
ExecStart=/home/pruss/dev/ServerDeploy5-4.1/Server/runServer.sh
User=root
Type=oneshot
[Install]
WantedBy=multi-user.target

ফলাফল

Job for myService.service failed. See "systemctl status myService.service" and "journalctl -xn" for details.

আমি চেষ্টা করি:

systemctl status myService.service


   Loaded: loaded (/usr/lib/systemd/system/myService.service; disabled)
   Active: failed (Result: exit-code) since Thu 2015-07-23 12:27:38 BST; 26s ago
   Main PID: 28413 (code=exited, status=203/EXEC)

এবং, যদি আপনি বর্গ পাওয়া যায়নি ব্যতিক্রম পেয়ে থাকেন তাহলে - তাই আমার উত্তর কটাক্ষপাত করা হতে পারে stackoverflow.com/questions/21503883/... আউট মূঢ় ইস্যু ;-( চিত্র আমার জীবনের একটা কয়েক ঘন্টার নেন
JGlass

উত্তর:


11

আপনার শেল স্ক্রিপ্টের প্রয়োজন হতে পারে না। আপনি জাভা বাইনারি এবং জার ফাইল উভয়ের পুরো পথ ব্যবহার করে আপনি মাই সার্ভিস.সার্ভিস ফাইল থেকে প্রক্রিয়া শুরু করতে পারেন। এটির মতো দেখতে হবে

ExecStart=/usr/bin/java -jar /home/pruss/dev/ServerDeploy5-4.1/Server/resources/MyServer.jar

CentOS 7.2 এ কাজ করে।


1
আমার মতামত, স্ক্রিপ্টটি বজায় রাখা সহজ ...
বেতলিস্ট

10

নিশ্চিত যে কে এই থাম্বস ডাউন দিয়েছে ..

আমি সমাধানটি খুঁজে পেয়েছি এবং অন্যদের প্রচেষ্টা বাঁচাতে এটি পোস্ট করেছি।

আপনি উপরে যা দেখেন তা কাজ করে। তবে চূড়ান্ত পরিষেবাটি হ'ল:

[Unit]
Description=MyProgramThing
[Service]
ExecStart=/home/prus/dev/Blah-4.1/Server/runServer.sh
Type=simple
User=prus
[Install]
WantedBy=multi-user.target

গুরুত্বপূর্ণভাবে, আমার শেল স্ক্রিপ্টের অভ্যন্তরে, .jar ফাইলটি আমার পুরো পথে রাখতে হবে। java -jar / home/myprog.jar ইত্যাদি

অর্থাত্ ./myJar.jar কাজ করেনি। আশা করি এইটি কাজ করবে.


1
আপনি এক্সেসটপটির জন্য কীভাবে অ্যাকাউন্ট করবেন?
বালাজী বোগগারাম রামনারায়ণ

আপনি যখন সিস্টেমড পরিষেবা বন্ধ করেন তখন সিটিআরএল + সি / সিগিন্টটি জাভা প্রক্রিয়ায় প্রেরণ করা হয়, আপনি যদি অ্যাপ্লিকেশনটি সেটির জন্য প্রতিক্রিয়া জানাই ভাল তবে টাইমআউটসটপসেকের পরে (ডিফল্ট: ডিফল্টটাইমআউটসটপসেক 90 এর দশক) এটি সিগকিল প্রেরণ করবে
রাদু টোডার

4

স্ট্যাকওভারফ্লোতে আমার উত্তরটি একবার দেখুন যা systemdকোনও জাভা অ্যাপ্লিকেশনটির জন্য পরিষেবা কীভাবে তৈরি করবেন তা বিশদ :

/programming//a/22121547/272180


1
ধন্যবাদ, আমি যা লিখেছি তা পূরণ করার জন্য Yglodt। আমি এক বছর আগে এটি বাছাই করার ব্যবস্থা করেছিলাম, তবে আপনার লেখা যদি অন্য কাউকে সহায়তা করে তবে তা বেশ ভাল।
মোম_আরক্ষীয়

2

এটি জাভা প্রক্রিয়াটির জন্য আমার সিস্টেমযুক্ত টেম্পলেট

[Unit]
Description=Spring MVC Java Service

[Service]
User=spring-mvc
# The configuration file application.properties should be here:
WorkingDirectory=/usr/local/spring-mvc


# Run ExecStartPre with root-permissions
PermissionsStartOnly=true

ExecStartPre=-/bin/mkdir -p /var/log/spring-mvc


ExecStartPre=/bin/chown -R spring-mvc:syslog /var/log/spring-mvc
ExecStartPre=/bin/chmod -R 775 /var/log/spring-mvc


Environment="ENV=stage"

#https://www.freedesktop.org/software/systemd/man/systemd.service.html#ExecStart=
ExecStart=/usr/bin/java \
        -Dlog4j.configurationFile=log4j2-spring.xml \
        -DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector \
        -Dspring.profiles.active=stage \
        -Denvironment-type=stage \
        -XX:+UseConcMarkSweepGC \
        -XX:CMSInitiatingOccupancyFraction=80 \
        -XX:NewSize=756m \
        -XX:MetaspaceSize=256m \
        -Dsun.net.inetaddr.ttl=5 \
        -Xloggc:/var/log/spring-mvc/gc.log \
        -verbose:gc \
        -verbosegc \
        -XX:+DisableExplicitGC \
        -XX:+PrintGCDetails \
        -XX:+PrintGCDateStamps \
        -XX:+PreserveFramePointer \
        -XX:+StartAttachListener \
        -Xms768m \
        -Xmx768m \
        -XX:+HeapDumpOnOutOfMemoryError \
        -jar spring-mvc.war

SuccessExitStatus=143
StandardOutput=journal
StandardError=journal


KillSignal=SIGINT
TimeoutStopSec=20
Restart=always
RestartSec=5
StartLimitInterval=0
StartLimitBurst=10

LimitNOFILE=500000
LimitNPROC=500000

#https://www.freedesktop.org/software/systemd/man/systemd.exec.html#LimitCPU=
#LimitCPU=, LimitFSIZE=, LimitDATA=, LimitSTACK=, LimitCORE=, LimitRSS=, LimitNOFILE=, LimitAS=, LimitNPROC=, LimitMEMLOCK=, LimitLOCKS=, LimitSIGPENDING=, LimitMSGQUEUE=, LimitNICE=, LimitRTPRIO=, LimitRTTIME=¶

SyslogIdentifier=spring-mvc

[Install]
WantedBy=multi-user.target


# https://www.freedesktop.org/software/systemd/man/journalctl.html
#check logs --- journalctl -u spring-mvc -f -o cat

0

আমার একই সমস্যা ছিল (কোড = প্রস্থানিত, স্থিতি = 203 / এক্সইসি)।

আপনার ব্যবহারকারীকে স্ক্রিপ্ট কার্যকর করার অনুমতি দিতে ভুলবেন না।

আপনি 777 আরও কিছু বিধিনিষেধে পরিবর্তন করতে চাইতে পারেন।

chmod 777 /home/yourscript.sh

অথবা

chmod u+x /home/yourscript.sh

তারপর:

systemctl daemon-reload 
systemctl start yourScript.service 
systemctl enable yourScript.service

0

আপনার একটি ওয়ার্কিং ডিরেক্টরী = যুক্ত করার দরকার হতে পারে তাই এটি কোথা থেকে জিনিস চালানো যায় তা জানে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.