AutoSys Cheatsheet

精通Unix下的Autosys自动化作业调度 Autosys是一个功能强大的作业调度工具,用于自动化和管理企业级的批处理任务。它帮助IT管理员安排各种周期性或一次性的任务,如备份、数据传输、报告生成等,确保它们按预定时间执行,从而优化资源使用并减少人工干预。在Autosys作业调度系统中,定义作业是实现自动化任务管理的基础。作业定义文件是包含作业调度信息的文件,它可以告诉Autosys何时以及如何执行特定的作业。Unix环境下,作业定义文件一般位于目录。Autosys允许管理员根据具体需求来编写自定义的报警脚本。 阅读详情

AutoSys: UNIX

Cd to the "autouser" ($AUTOUSER) directory and "." (or source) the "ksh" file. Ex: ". ./autosys.ksh.machine" After installing AutoSys, first make sure that the DB is up and running. Check the installation by running the command chk_auto_up to verify connection to the DB and event processor.

Enter the KEYS through "gatekeeper", add keys

Run the "autosys_secure" command to set the AutoSys Edit and Exec Super users (and also to enter NT users/passwords)

Start the Event Processor by running the command "eventor"

Shutdown AutoSys: "sendevent -E STOP_DEMON"

To start the AutoSys GUI set your DISPLAY and run the command " autosc &".

NT: Start AutoSys from start->programs->AutoSys-> administrator ->Graphical User Interface ->Command Prompt

Command Line Commands:

  1. gatekeeper: Allows you to enter the License Keys which allow you to run AutoSys.

  2. eventor [-M machine_name] : Starts the event processor.

  3. autorep -J [ALL | Job_name] [-q] [> file_name], -d (detail), -r (run number), -o (override), jil < file_na -G (global var report), -M -q for machine definitions.
    Ex: autorep -J job_name -d
        autorep -J job_name -d
        autorep -J job_name -q > file_name queries the DB & save job Dfn. Into a file
          vi file_name
          When you want a report of a box use the -L0 option
          Autorep -J job_name -l1 report on the job for the day -1 (prev day)

  4. sendevent -E STARTJOB -J job_name, sendevent -E FORCE_STARTJOB -J job_name, [JOB_ON_ICE, JOB_OFF_ICE, JOB_ON_HOLD, JOB_OFF_HOLD, SET_GLOBAL, STOP_DEMON. . . .]
    sendevent -E STOP_DEMON - to stop AutoSys
       (ex: sendevent -E SET_GLOBAL -G "var_name=/home/mydir" to set a var)
       (ex: sendevent -E SET_GLOBAL -G "var_name=DELETE" to delete a var)]

  5. chk_auto_up: checks to see if event processor and the DB are both up.

  6. autoping -m machine: verify that both client & server are correctly configured.

  7. cron2jil -f cronfile [-d outdir] [-I incl_file] [-m machine] [-p prefix]

  8. jil <CR>
    To insert a job directly into the DB
    insert_job: job.id job_type: c
    machine: machine_name
    command: echo testing jil
    [go | ;] (depending on the DB you are using)
    Template example:

    /* ----------------- template ----------------- */

    insert_job: template job_type: c
    box_name: box1
    command: ls -l
    machine: localhost
    owner: lyota01@TANT-A01
    permission: gx,ge,wx,we,mx,me
    date_conditions: 1
    days_of_week: all
    start_times: "15:00, 14:00"
    run_window: "14:00 - 6:00"
    condition: s (job1)
    description: "description field"
    n_retrys: 12
    term_run_time: 60
    box_terminator: 1
    job_terminator: 1
    std_out_file: /tmp/std_out
    std_err_file: /tmp/std_err
    min_run_alarm: 5
    max_run_alarm: 10
    alarm_if_fail: 1
    max_exit_success: 2
    chk_files: /tmp 2000
    profile: /tmp/.profile
    job_load: 25
    priority: 1
    auto_delete: 12

  9. autosyslog -e: same as tail -f autosys_log_file. This command must be run from the machine where the server resides if used with the -e option. Else it can be used with the -J option to see that job's run log.

  10. job_depends: -[c|d|t] -J jobname [-F "mm/dd/yy time"] [-T "mm/dd/yy time"] (Note: It will only print out the first occurrence found)

  11. monbro -n monitor_name: Allows you to run from command line monitor/browser programs previously created using the monitor/browser GUI.exec superuser: AUTOSYS superuser

  12. autocal_asc full_cal_name: prints, adds & deletes custom calendar definitions.

  13. autostatus: Reports the current status of a specific job, or the value of an AutoSys global variable. Ex: autostatus -J job_name, -S instance

  14. autotimezone -l : Allows additions, deletions, and queries to the timezones table (-l provides list).

  15. autotrack: Tracks & report changes to the AutoSys DB. Ex: autotrack -l 2 (level 2) [sets the tracking level] autotrack -U sys -v (user sys: verbose) To start using the autotrack utility type: autotrack -u to set tracking level 1 or 2. By default it is set to 0. Autotrack -l will list the current tracking level. Options -[J, U, m, F, T, and t] are to request reporting on a specific Job, User, machine, time window (-F -T), and event type (t). Type is used in conjunction w/other parameters. autotrack w/no arguments retrieves information an all events omitting detail. -v option is for verbose.

  16. autosys_secure: to change edit, exec superusers, change DB passwd, change remote authentication method.

  17. chase [-A|E]: Makes sure that jobs claiming to be running in the client machine are running. The "-E" option restarts the job.

  18. archive_events: to archive events in the DB which are older than x days to prev DB from becoming full.

  19. clean_files: Deletes old remote agent log files. It does it by searching the DB for all machines which have had jobs started on them.

  20. autostatad: to get the status of a PeopleSoft job. You can define one of the user definable buttons to view PeopleSoft job: Autocons*userButton1Label: Adapter Status

User definable buttons: There are user definable buttons in the operator's console.

How to configure:

Autocons*userButton1Command: /autosys/bin/autostatad -J $JOB -g & (which allows you to have a command button on the operator's console.)

Dependencies:

success (job) and s(job_b)
failure(job_a) or f (job_b)
notrunning (job)
terminated(job)
exitcode(job) > 5 and exitcode(job_b) != 10
value(global_name)=100
done(job)

Hostscape: Schedule a job to run every x minutes & then go into forecasting. Make that job fail.

  • Solid black line: Hostscape can communicate with the remote agent in the client machine.

  • Solid red line: Hostscape can't communicate with the remote agent but it can communicate with the internet daemon (inetd) running on that machine..

  • Dashed red line: Hostscape can't communicate with the client machine at all. Client is probably down.

  • Accessing a variable name: $$GLOBAL_VAR_NAME (unless used in dependency condition with a job definition. If used in the "command" field, you must use the $$)

Tunable Parameters:

  • $AUTOUSER/config.ACE

  • $AUTOUSER/autosys.ksh.xxx

  • /etc/auto.profile

  • /etc/inetd.conf

  • /etc/services

Notify.Ace: The alarms to notify on are:
(There is an example in $AUTOSYS/install/data/Notify.Ace).

  • DB_ROLLOVER

  • DB_PROBLEM

  • EP_HIGH_AVAILABILITY

  • EP_ROLLOVER

  • EP_SHUTDOWN

Where to go to find the Errors:

  • $AUTOUSER/out/event_demon.$AUTOSERV
    ($AUTOUSER/out/event_demon.ACE)

  • Output from the job definition output & error files

  • /tmp files created for job_run at client machine

  • $AUTOSYS/out/DBMaint.out for DB problems

  • $SYBASE/install/errorlog_$DSQUERY when event server will not start.

  • NT: AutoNuTc\lib/X11\app-defaults\xpert

AutoSys Maintenance: DBMaint @$AUTOSYS/bin

Once a day the Database goes into a maintenance cycle. Every day at 3:00am it runs a program called DBMaint. This is user configurable. The program runs DBstatistics which is found in $AUTOSYS/bin.

app-defaults file: /usr/openwin/lib/app-defaults directory. Autocons, Xpert, etc.. ( or: /usr/lib/X11/app-defaults, /autosys/bin/X11/app-defaults)

Environment file: /etc./auto.profile
C programs: $AUTOSYS/code
Where to change AutoSys screen fonts: /usr/openwin/lib/app-defaults
Where to look for troubleshooting: Chapter 15
Summary of commands: Appendix C

$AUTO_JOB_NAME: when naming a file dynamically using as prefix AutoSys's job name.
$AUTORUN: unique identifier for the run of that job
$AUTOPID: unique identifier for that job's run number (PID)
$JOID: DB identifier for a job. To extract from the DB: select joid from job where job_name=" "

Creating a Virtual Machine:

insert_machine: virtual
type: v /* default, not required */
machine: real_1
machine: real_2
max_load: 100
factor: 0.5 /* used to describe the relative processing power of a machine. Usually between 0.0-1.0*/
machine: real_2
max_load: 60 /* this is designed to limit the loading of a machine */

Load Balancing, Queuing, priorities:

insert_job: test_load
machine: localhost
command: echo "Test load balancing"
job_load: 50
priority: 1 /* this only affects queues */

Note: For 5.0 we will be using information from ServerVision's towards our load balancer which is composed of 26 categories such as i/o usage, disk usage, CPU usage, etc.

Testing:
zql
zql -U autosys -P autosys

NOTES:

When a job is stuck in the starting condition this means that the event processor communicated with the remote agent and passed all the information the remote agent ran the job but was not able to communicate to the DB. Once testing is done with AutoSys one should change the default refresh interval for AutoSys. This is so there is less querying to the DB. When AutoSys goes from dual mode to single mode, always run the autobcp command before bringing AutoSys back to dual mode/High Availability. Default behavior for stdout is to always appends. If you want to overwrite the file enter the following, no spaces: ">file.out"

Box Logic

Use boxes to group jobs with like scheduling parameters, not as means of grouping jobs organizationally. For example, if you have a number of jobs that run daily at 1:00 a.m., you could put all these jobs in a box and assigning a daily start condition to the box. However, a variety of account processing jobs with diverse starting conditions should not be grouped in the same box.

Default Box Job Behavior

Some important rules to remember about boxes are:

  • Jobs run only once per box execution.
  • Jobs in a box will start only if the box itself is running.
  • As long as any job in a box is running, the box remains in RUNNING state; the box cannot complete until all jobs have run.
  • By default, a box will return a status of SUCCESS only when all the jobs in the box have run and the status of all the jobs is "success." Default SUCCESS is described in Default Box Success and Box Failure on page 5-13.
  • By default, a box will return a status of FAILURE only when all jobs in the box have run and the status of one or more of the jobs is "failure." Default FAILURE is described in Default Box Success and Box Failure on page 5-13.
  • Unless otherwise specified, a box will run indefinitely until it reaches a status of SUCCESS or FAILURE. For a description of how to override this behavior, see Box Job Attributes and Terminators on page 5-6.
  • Changing the state of a box to INACTIVE (via the sendevent command) changes the state of all the jobs in the box to INACTIVE.

When you Should Not Use a Box

The fact that all jobs in a box change status when a box starts running has lead some to use boxes to implement "job cycle" behavior. Be aware that placing jobs in a box to achieve this end may bring with it undesired behavior due to the nature of boxes.

Avoid the temptation to put jobs in a box as a short cut for performing events (such as ON_ICE or ON_HOLD) on a large number of jobs at once. You will most likely find that the default behavior of boxes inhibits the expected execution of the jobs you placed in the box.

Likewise, you should not place jobs in a box solely because you want to run reports on all of them. When you run autorep on a box, you will get a report on the box and all the jobs in the box (unless you use the -L0 option). In addition, if you use wildcarding when specifying a job name, you could get duplicate entries in your report. For example, suppose you have a box named "acnt_box" containing three jobs named "acnt_job1", "acnt_job2", and "daily_rep". If you specify acnt% as the job name for the autorep report, the report will have an entry for the box "acnt_box" and an entry for each job in the box. Then autorep will continue searching for all job names matching the wildcard characters and, thus, will list "acnt_job1" and "acnt_job2" a second time.

What Happens when a Box Runs

As soon as a box starts running, all the jobs in the box (including sub-boxes) change to status ACTIVATED, meaning they are eligible to run. (Because of this, jobs in boxes do not retain their statuses from previous box cycles.) Then each job is analyzed for additional starting conditions. All jobs with no additional starting conditions are started, without any implied ordering or prioritizing. Jobs with additional starting conditions remain in the ACTIVATED state until those additional dependencies have been met. The box remains in the RUNNING state as long as there are activated or running jobs in the box.

If a box is terminated before a job in it was able to start, the status of that job will change directly from ACTIVATED to INACTIVE.

Note o Jobs in a box cannot start unless the box is running. However, once the job starts running, it will continue to run even if the box is later stopped for some reason.

Time Conditions in a Box

Each job in a box will run only once per box execution. Therefore, you should not define more than one time attribute for any job in a box because the job will only run the first time. If you want to put a job in a box, but you also want it to run more than once, you must assign multiple start time conditions to the box itself, and define no time conditions for the job. Remember also that the box must be running before the job can start. Do not assign a start time for a job in a box if the box will not be running at that time. If you do, the next time the box starts the job will start immediately.

The following example illustrates a scenario that would not work properly if placed in a box.

"job_a" is defined to run repeatedly until it succeeds. "job_report" has one starting condition-the success of "job_a".

How Job Status Changes Affect Box Status

If a box that is not running contains a job that changes status, as a result of a FORCE_STARTJOB or CHANGE_STATUS event, the new job status could change the status of its container box. A change of status of the box could trigger the start of downstream jobs that are dependent on the box.

If a box contained only one job, and the job changed status, the box status would change.

Forward from: http://supportconnectw.ca.com/public/autosys/infodocs/autosys_cheatsheet.asp

Autosys+guide AutoSys is an automated job control system for scheduling, monitoring, and reporting. These jobs can reside on any AutoSys-configured machine that is attached to a network. An AutoSys job is any single command, executable, script, or Unix batch file. Each AutoSys job definition contains a variety of qualifying attributes, including the conditions specifying when and where a job should be run. 立即下载

相关推荐

Autosys Job Management

Autosys Job Management, you know!

autosys 查看job状态

autostatus -J $JOB   success (job) and s(job_b) failure(job_a) or f (job_b) notrunning (job) terminated(job) exitcode(job) > 5 and exitcode(job_b) != 10 value(global_name)=100 done(job) http:

走马观花 3886

autosys job document

It's an official document about autosys job. Benifit for rookies

一个网站健康监控系统的基本原理及实现

简介 本文描述一个基于Autosys Job + shell脚本 + Java的网站健康监控系统的基本原理.用以实现每天定时监控一个网站及其下面多个子网站的健康状况.一旦有指定的站点或者资源不可访问,系统即发出警报邮件给特定的管理员.   一.Autosys Job 如果要使用Autosys Job,必须要搭建Autosys Server.这部分不重点介绍.环境搭建好之后,我们必须定义自...

u012230451的专栏 734

先进的分布式调度由CA的autosys.zip

先进的分布式调度由CA的autosys.zip

SOI技术实战:从晶圆结构到芯片性能提升的完整解析

本文深入解析SOI(Silicon on Insulator)技术如何通过独特的三明治晶圆结构提升芯片性能,涵盖从220nm SOI层设计到7nm节点的工艺挑战。详细探讨了埋氧层的绝缘优势、性能提升的物理机制,以及AMD处理器和5G射频中的实战应用,为半导体行业提供关键技术洞见。

wdx0123456的博客 961

Autosys(CA Workload Automation AE)学习总结

Autosys,现在的完整名字应该是CA Workload Automation AE,其中AE指的就是Autosys Edition。它是一个类似于CRON的自动化作业控制系统,分布式架构。 注意:本文后续所有提到Autosys的地方,实际上指的都是“CA Workload Automation AE”。 实例(Instance):Autosys在服务器端运行的软件就是一个实例。每一

KNIGHTRCOM(rcom10002的专栏) 1万+

python k线顶分型_【缠论】分型、笔的定义及其程序化

K线包含关系处理和分型的定义如果一个K线的高低点全在另一K线的范围里,称之为包含关系。针对这种K线,需要进行一些处理,去除包含关系,处理方法:向上时,把两K线的高点当高点,而两K线低点中的较高者当成低点;反之,当向下时,把两K线的低点当低点,而两K线高点中的较低者当成高点,这样就把两K线合并成一新的K线。经过这样的处理,所有K线图都可以处理成没有包含关系的图形。两K线的包含关系,可以分成四种:1)...

weixin_39717152的博客 2824

AutoSys 技术总结

AutoSys 是一款企业级的作业调度和自动化软件,通过集中化管理、高可用性架构、灵活的调度策略和多平台支持,为企业提供了全面的作业调度解决方案。通过掌握 AutoSys 的核心组件、应用场景以及实际应用中的经验和技巧,用户可以高效地进行作业调度和自动化管理,提升工作效率和系统稳定性。作为一款企业级的作业调度和自动化解决方案,AutoSys 已被广泛应用于各个行业,帮助企业实现复杂的作业调度和自动化任务管理。通过 AutoSys 定义和管理每日数据备份作业,实现自动化的备份流程,提高了备份的效率和可靠性。

weixin_40426261的博客 1427

【Burp入门第三十一篇】Burp+SwitchyOmega实现本地localhost代理

在部分情况下(如本地靶场),当我们需要在Burp中查看、修改本地流量包的时候,按以下三个配置是不能得到本地流量包的。

等风来 3214

基于 FPGA Vivado 示波器设计(附源工程)

今天给大侠带来基于 FPGA Vivado 示波器设计,开发板实现使用的是Digilent basys 3,如有想要入手basys3开发板的,可以联系牛总:18511371833。话不多说,上货。 本篇掌握基于添加文件和IP的Vivado工程设计流程,掌握基于Tcl的Vivado工程设计流程,学习示波器的基本组成结构。获取本篇相关源工程代码,可在公众号内回复“示波器设计源工程”。 原理介绍 数字存储示波器能够将模拟信号进行采样、存储以及显示。本系统在DIGILENT ...

7389

Autosys CheatSheet (Reposted)

AutoSys: UNIX Cd to the "autouser" ($AUTOUSER) directory and "." (or source) the "ksh" file. Ex: ". ./autosys.ksh.machine" After installing AutoSys, first make sure that the DB is up and running. Che...

iushnauh的专栏 317

【YOLO11改进 - C3k2融合】C3k2融合AKConv(可改变核卷积)二次创新:任意数量的参数和任意采样形状的即插即用的卷积

【YOLO11改进 - C3k2融合】C3k2融合AKConv(可改变核卷积)二次创新:任意数量的参数和任意采样形状的即插即用的卷积

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 407

autosys job use unix command

http://www.experts-exchange.com/Database/Oracle/Q_27575593.html Autosys variable not being set in profile Asked by: BadHatHarry I have created an autosys job (this is a test job, the origi

走马观花 4178

Google Earth Engine 实现图像随机森林分类_遥感分类全流程详解

本文将通过一段完整的GEE代码,逐步讲解如何利用Sentinel-2影像和随机森林算法,实现地表覆盖分类。代码包含等关键步骤,适合遥感入门学习!

国科大硕士在读,分享Python/GEE/Matlab/R专业代码实践,涵盖数据分析、算法开发与应用技巧等,以代码会友。 916

UNET改进77:全网首发-添加CFBlock |

本文介绍了在UNet模型中集成CFBlock注意力机制的实现方法。主要分为三个步骤:1) 创建CFBlock模块,包含卷积注意力机制和MLP;2) 在UNet连接处添加注意力模块;3) 在卷积层中嵌入注意力机制。具体实现包括:定义Conv、MLP和ConvolutionalAttention等基础模块,构建CFBlock核心结构;在UNet跳跃连接处插入注意力模块;将注意力机制整合到DoubleConv和Down模块中。该方法通过在不同位置引入注意力机制,可有效提升模型的特征提取能力。代码实现使用PyTor

AIcurator的博客 388

autosys虚拟机定义

delete_machine: V50136 insert_machine: V50136 type:v machine: servername so that autosys know which server to run job http://media.ccidnet.com/media/ciw/688/01640001.htm 作业调度与autosys 雷州,徐志

走马观花 2016

OpenCV-Python实战(1)——OpenCV简介与图像处理基础

OpenCV 是一个的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时也提供了 Python 接口,实现了图像处理和计算机视觉方面的很多通用算法。在本文中,将介绍 OpenCV 库,包括它的主要模块和典型应用场景,同时使用 OpenCV-Python 实战讲解图像处理基础要点。

盼小辉丶的博客 27万+

autosys总结

1. 使用JIL创建JOB Syntax: sub_command: job_name attribute_keyword: value 注: 指定box的时候, 需要预先定义好该box 属性值带有冒号时, 应该是用转义字符\, 如10:00 --&gt; 10\:00 关于备注: 有2中备注方式: 行备注, 采用#开始的整行 多行备注, 类似C语言, /* ...

tendyming 3109

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Autosys Introduction and Architecture

Autosys Introduction and Architecture

u011868279的博客 947

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Autosys - A Job Scheduling tool

http://www.indiastudychannel.com/resources/17736-Autosys-A-Job-Scheduling-tool.aspx Autosys UNICENTRE is a job scheduling tool. The following article provides a brief information about the commands

走马观花 1815

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

AutoSys状态解释,含ON HOLD和ON ICE

作为开发,平时接触Autosys最多的机会就是查看配置等,那么状态信息肯定是非常重要的

拾年一剑 的专栏 1808

autosys 基本命令

AutoSys的基本命令 1.cmd  sendevent -E FORCE_STARTJOB -J JobName sendevent -E JOB_ON_ICE -J JobName sendevent -E CHANGE_STATUS -s FAILURE -J JobName sendevent -E CHANGE_STATUS -s SUCCESS -J JobName

有梦就别怕痛 3806

Learn Autosys - A Job Scheduling Tool

Custom Search AutoSys - A Job Scheduling Tool AutoSys on Unix Cd to the "autouser" ($AUTOUSER) directory and "." (or source) the "ksh" file. Ex: ". ./

zjhgx的专栏 1490

Autosys中ON_HOLD和ON_ICE的区别

对于Autosys中作业ON_HOLD和ON_ICE的区别,整理如下: ON HOLD ON ICE 表示作业处于暂停状态,并且在我们将其取消保留之前无法运行。 表示作业已从作业流中删除,但仍定义任然在 。该作业不会被启动, 它会保持ON ICE,直到它收到JOB_OFF_ICE为止 当作业处于ON HOLD状态时,所有...

abc33880238的博客 391

[学习笔记]CA Autosys(2) — condition依赖条件

Dependent Jobs 具有依赖的作业 在Autosys中,作业(Job)可以取决于其他作业的完成结果。 具有依赖的作业和简单作业之间的唯一区别是它依赖于另一个或多个作业。 我们可以通过condition属性来指定作业依赖关系。我们还可以在作业的依赖关系中添加时间限制,即回看条件(look-back condition)。 更多关于condition属性的介绍,请移...

abc33880238的博客 916
上一篇: 金庸才是炒股高手!炒股理念早写的明明白白
下一篇: 用openssl对文件加密及解密
LamarChen
博客等级 码龄21年 32粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值