Tugas terjadwal Windows gagal diselesaikan dengan kode kesalahan 0xc000013a

11

Saya menggunakan Windows Server 2003 dan memiliki tugas terjadwal yang gagal diselesaikan. Tugas diatur untuk menjalankan Script Perintah Windows (.cmd) pukul 15:00 setiap hari. Skrip menjalankan program yang mengekstrak beberapa data dari database SQL Server dan mengunggah data itu ke server FTP.

Kode kesalahan yang ditampilkan di kolom "Hasil terakhir" dari folder tugas yang dijadwalkan adalah 0xc000013a. Pencarian Google cepat mengarah ke halaman dukungan Microsoft ini yang menyatakan: Kode kesalahan "C" yang paling umum adalah "0xC000013A: Aplikasi diakhiri sebagai akibat dari CTRL + C".

Tidak ada yang login pada saat tugas berjalan, jadi tidak ada seorang pun di sekitar untuk menekan CTRL + C. Saya tidak yakin saya mengerti apa yang dikatakan di sini di dokumentasi Microsoft.

Saya telah memeriksa hal-hal yang belum sempurna - tugas terjadwal diaktifkan, dijadwalkan untuk berjalan setiap hari, dan menunjuk ke file yang memang ada di lokasi yang valid. Menariknya, ketika saya menjalankan tugas ini secara manual (baik dengan menjalankan skrip .cmd dari baris perintah, atau dengan mengklik kanan tugas dan mengklik "Jalankan") tugas selesai dengan sukses.

Apa arti kode kesalahan ini, dan bagaimana saya bisa menjalankan tugas ini ketika saya tidak ada di sana untuk memaksanya?

Brian Willis
sumber
Coba tambahkan sendiri kode keluar ke skrip akhir (mis exit 0.). Jika masih gagal, gagal dengan sendirinya. Jika tidak, itu hanya kode keluar palsu yang disalahtafsirkan oleh penjadwal tugas.
bjoster

Jawaban:

6

Memecahkan masalah skrip terjadwal:

  1. Jika Anda belum melakukannya, periksa file log Tugas Terjadwal , di GUI di bawah Lanjutan > Lihat Log . Cari file untuk " ***" menemukan entri terbaru, dan Anda mungkin melihat sedikit info kesalahan tambahan.

  2. Tentukan file log untuk menangkap output, dan kirim standard out dan standard error di sana. Ubah echo OFF menjadi echo ON untuk memastikan Anda tidak menekan pesan kesalahan apa pun.
    Misalnya, jika skrip Anda dipanggil ftp.data.cmdmaka tugas terjadwal Anda mungkin terlihat seperti ini,

    cmd /c ftp.data.cmd >> ftp.data.log 2>&1

  3. Apakah skripnya tergantung? Mungkin penjadwal tugas membunuh skrip (maka kode kesalahan CTRL + C) setelah beberapa periode waktu tertentu. Tambahkan beberapa ini di titik-titik strategis di skrip Anda,

    echo %DATE% %TIME%

  4. Apakah Anda yakin akun yang menjalankan skrip memiliki izin / akses ke semua yang ada di skrip?

  5. Jika Anda tidak bisa mendapatkan kesenangan, jalankan perintah ini dan posting output di sini, mungkin kita bisa mulai dengan penjadwalan,

    schtasks /query /v /fo LIST /s YOURSERVER

menyebalkan
sumber
4

Saya tidak dapat menjawab pertanyaan secara langsung karena saya tidak tahu secara spesifik apa arti pesan kesalahan (atau, oleh karena itu, bagaimana cara memperbaikinya), tetapi jika saya mencoba memecahkan masalah saya akan menambahkan beberapa tulisan ke file log di poin strategis dalam skrip dan kemudian setelah waktu yang dijadwalkan lihat apa pos pemeriksaan terakhir untuk dijalankan.

Kecurigaan saya adalah bahwa ada sesuatu yang gagal karena kredensial skrip berjalan di bawah atau sesuatu dalam skrip membutuhkan pengguna yang login. Mempersempit tempat skrip gagal mungkin membantu Anda menemukan kode "menyinggung".

cori
sumber
2

Saya menyadari ini adalah postingan lama tetapi sangat membantu ketika mencari solusi dan mungkin apa yang saya temukan juga dapat membantu. Saya menggunakan WinSCP pada Windows Server 2003 untuk mengunggah ke server ftp dan menerima pesan kesalahan yang sama dan file SchedLgU.txt menunjuk ke tidak cukup waktu di bagian "Hentikan tugas jika diperlukan:" meskipun saya memberi tugas banyak waktu untuk mengunggah.

Mencari di Task Manager saya bisa melihat bahwa WinSCP.exe tidak menghapus dan saya punya banyak proses dalam daftar, jadi saya membuat file batch (taskkill / f / im winscp.exe) untuk membunuh proses yang terbuka dan saya memiliki file batch berjalan sebelum WinSCP dan berfungsi dengan baik sekarang.

susand
sumber
2

Saya mengalami ini hari ini di server jarak jauh, dan solusinya adalah mengubah pengaturan jalankan dari "Jalankan hanya ketika pengguna masuk" menjadi "Jalankan apakah pengguna masuk atau tidak".

Dengan "Jalankan hanya ketika pengguna masuk" tugas meluncurkan jendela perintah yang ditutup ketika sesi desktop jarak jauh saya kehabisan waktu. Dengan "Jalankan apakah pengguna masuk atau tidak" tidak ada jendela yang ditampilkan saat tugas berjalan, sehingga eksekusi tidak berhenti ketika sesi desktop jarak jauh saya berakhir.

VolleyJosh
sumber
1

Mirip dengan jawaban cori, saya akan merekomendasikan agar Anda memeriksa siapa tugas yang dijadwalkan akan dijalankan, karena saya telah melihat kesalahan ini terjadi ketika akun pengguna yang menjalankan tugas tidak memiliki izin yang sama dengan pengguna yang masuk

Glenn Slaven
sumber
1

Jika ini berjalan sebelumnya, mungkin kondisi seperti pemadaman jaringan atau masalah pada host lain dapat menjelaskan kegagalan tersebut.

Ted Taylor
sumber
1

Saya memiliki kesalahan yang sama dan itu karena file batch yang saya jalankan meminta beberapa file untuk menghapus dengan perintah DEL. Karena tidak ada pengguna untuk menjawab Y / N untuk proses batch, tugas yang dijadwalkan berakhir. Berikut ini adalah pesan yang saya temukan di log tugas terjadwal saya: "tugas itu dihentikan. Tindakan ini diprakarsai oleh administrator atau oleh layanan Penjadwal Tugas (karena, misalnya, komputer sekarang non idle)." Rekomendasi saya adalah untuk menjalankan tugas secara manual dari command prompt untuk melihat di mana ia berhenti atau meminta beberapa interaksi pengguna, memperbaikinya dan tugas Anda akan berjalan dengan baik.

ruddwall
sumber
1

Jika Anda mencoba menjalankan program di bawah kontrol Penjadwal Tugas, System.Environment.CurrentDirectory akan mengembalikan C: \ Windows \ System32, BUKAN di mana executable Anda berada. Kesalahan ini bisa merupakan kesalahan yang tidak ditemukan file; Saya mencoba masuk ke subdirektori dan tidak ada di pohon System32.

roadkill42
sumber
0

Di skrip saya ini jelas. Itu terjadi karena saya memiliki "jeda" di akhir file batch dan tugas yang dijadwalkan dibatasi hingga 20 menit. Ketika pengguna hadir, hai dapat melihat aliran pekerjaan. Ketika file batch tidak dihentikan oleh tugas yang dijadwalkan, setelah 20 menit. Ini menyebabkan 0xc000013a dan tidak masalah.

Danko
sumber
0

Saya memiliki masalah yang sama dan memperbaikinya dengan mengubah pemicu dari "On system startup" menjadi "On logon".

Andrei G
sumber
0

memiliki masalah yang sama .. diperbaiki dengan bermain dengan pengguna yang terdaftar untuk menjalankan tugas yang dijadwalkan. pada akhirnya, mengubah domain adalah jawabannya.

tal
sumber